2012-04-10 2 views
1

Java에 익숙하지 않습니다. 파일 복사기 응용 프로그램을 기본 FileInputStreamFileOutputStreambufferedInputStreambufferedOutputStream을 사용하여 시도했습니다. 나는 Progress bar를 사용하여 Progress와 Worked를 보여 주었다. 모든 것이 괜찮았다. catch 절 FileNotFoundException을 추가하여 오류를보고합니다. 마찬가지로 손상된 디스크에서 파일을 복사하려고 시도했을 때 어느 정도 복사되어 여전히 서있었습니다. read errors을 어떻게 찾습니까? catch 절이 있습니까? 도와주세요.java에서 FileCopying의 읽기 오류를 감지하는 방법은 무엇입니까?

+0

런타임에 예외가 발생 했습니까? –

+0

IO 작업 중 하나가 실패하면 던져 져야하는 'IOException'이 있습니다. IOException이 어떻게 작동하는지에 대해서는 http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html을보십시오. – twain249

+0

아니요. 30 분 동안 계속 서있었습니다. –

답변

2

실제 해결책이 없습니다. Java는 저수준 파일 I/O를 수행하기 위해 운영 체제에 의존합니다. 운영 체제가 손상된 파일을 읽으려고 시도하는 동안 오랫동안 멈추기로 결정하면 Java 응용 프로그램이 그 파일에 대해 수행 할 수있는 일이 없습니다.

어떻게 읽기 오류를 감지합니까? catch 절이 있습니까?

결국 read 작업이 실패하면 어떤 종류의 IOException이 발생합니다. 그러나 예외에 대한 catch를 추가하면 지연된 읽기 요청의 차단을 해제 할 수 없습니다.

손상된 디스크에서 데이터를 복구하는 것은 Java에서 해봐야 할 일이 아닙니다. 디스크 블록 수준에서 디스크 장치에 액세스 할 수있는 기본 응용 프로그램을 작성해야합니다. 또는 기존의 데이터 복구 도구를 사용하십시오.

+0

데이터를 복구하려고하지 않습니다. 난 단지 메시지 상자에 읽기 오류를보고 싶어요. –

+0

손상된 것으로 알려진 디스크가있는 경우 ** 읽기를 시도하면 안됩니다. 하지만 제가 말했듯이, 좋은 해결책은 없습니다. 당신이 할 수있는 최선의 방법은 진행을하지 않는 읽기를하는 스레드를 감시하는 워치 독 스레드를 만드는 것입니다. 그러나 일단이를 감지하면 복구 할 수있는 방법이 없습니다. –

+0

최소한 사용자에게 오류를보고 할 수 있습니까? –

0

당신이 당신의 FileInputStreamFileOutputStream 개체에 대한 당신의 read()write() 문 (RESP를.) 할 때 문제가 읽기 또는 파일 시스템으로/서면있을 경우, IOException 네이티브 부분에서 발생할 수 있습니다. FileNotFoundException과 같은 방식으로 잡을 수 있으며 메시지에 특정 오류에 대한 자세한 정보가 표시됩니다.