2012-04-10 13 views
1

Javaに新しいです。私は、基本的なファイルFileInputStreamFileOutputStreambufferedInputStreambufferedOutputStreamを使ってファイルコピーアプリケーションを作ろうとしました。プログレスバーを使って進行状況を表示し、それを動かしました。すべてが大丈夫でした。 catch句FileNotFoundExceptionを追加してエラーを報告しました。同様に、破損したディスクからファイルをコピーしようとしたところ、ある程度までコピーされてしまいました。 read errorsを検出するにはどうすればよいですか?キャッチ条項はありますか?私を助けてください。javaでFileCopyingの読み取りエラーを検出するにはどうすればよいですか?

+0

実行時に例外がスローされますか? –

+0

IO操作の1つが失敗した場合にスローされるべき「IOException」があります。 'IOExceptions'の仕組みについては、http://docs.oracle.com/javase/6/docs/api/java/io/IOException.htmlをご覧ください。 – twain249

+0

いいえ、それは30分まだ立っていた –

答えて

2

実際の解決策はありません。 Javaはオペレーティングシステムに依存して低レベルのファイルI/Oを実行します。オペレーティングシステムが壊れたファイルの読み込みを再試行している間に長い間フリーズすることに決めた場合、Javaアプリケーションが実行できることは何もありません。

読み取りエラーを検出するにはどうすればよいですか。キャッチ条項はありますか?

read操作が最終的に失敗した場合、何らかの種類のIOExceptionが発生します。しかし、例外のキャッチを追加しても、ストールされた読み込み要求のブロックを解除することはできません。

壊れたディスクからデータを回復することは、Javaでやり直すべきことではありません。ディスクブロックレベルでディスクデバイスにアクセスできるネイティブアプリケーションを作成する必要があります。または、既存のデータ復旧ツールを使用してください。

+0

私はデータを回復しようとしていません。私は、メッセージボックスにRead Errorを報告したいだけです。 –

+0

破損しているディスクが判明している場合は、**読まないでください**。しかし、私が言ったように、良い解決策はありません。あなたができる最良のことは、スレッドが進行中ではないことを見ているウォッチドッグスレッドを作成することです。しかし、それが検出されると、回復するために何もできません。 –

+0

少なくともユーザにエラーを報告することは可能ですか? –

0

あなたFileInputStreamFileOutputStreamオブジェクト上のごread()write()ステートメント行う(それぞれの)問題は、ファイルシステムへの/からの読み取りまたは書き込みであるかどう、IOExceptionは、ネイティブの部分から生じる可能性があります。 FileNotFoundExceptionと同じ方法でキャッチして、そのメッセージに特定のエラーの詳細を表示することができます。

関連する問題