如何在java中的FileCopying中检测读取错误?

时间:2012-04-10 15:57:03

标签: java fileinputstream fileoutputstream file-copying

我刚接触Java。我尝试使用基本FileInputStreamFileOutputStream以及bufferedInputStreambufferedOutputStream来执行文件复印机应用程序。我使用了一个进度条来显示进度和它的工作情况。一切都很好。我添加了catch子句FileNotFoundException来报告错误。同样,当我尝试从损坏的磁盘复制文件时,它会在某种程度上复制并保持静止。如何检测read errors。有没有抓住条款?请帮帮我。

2 个答案:

答案 0 :(得分:2)

这没有真正的解决方案。 Java依靠操作系统来执行低级文件I / O.如果操作系统在重试读取损坏的文件时决定冻结很长时间,那么Java应用程序就无法做到这一点。

  

如何检测读取错误。是否有任何捕获条款?

如果/ read操作最终失败,您将获得某种类型的IOException。但是为异常添加一个catch不能解除阻塞的读取请求。

从损坏的磁盘中恢复数据不是您应该尝试在Java中执行的操作。您需要编写可以在磁盘块级别访问磁盘设备的本机应用程序。或者更好的是,使用现有的数据恢复工具。

答案 1 :(得分:0)

当您对read()write()个对象(相应)进行FileInputStreamFileOutputStream语句时,原始部分可能会出现IOException如果从文件系统读取或写入文件系统时出现问题。您可以像捕获FileNotFoundException一样捕获它,并查看其消息以获取有关特定错误的更多信息。