我刚接触Java。我尝试使用基本FileInputStream
和FileOutputStream
以及bufferedInputStream
和bufferedOutputStream
来执行文件复印机应用程序。我使用了一个进度条来显示进度和它的工作情况。一切都很好。我添加了catch子句FileNotFoundException
来报告错误。同样,当我尝试从损坏的磁盘复制文件时,它会在某种程度上复制并保持静止。如何检测read errors
。有没有抓住条款?请帮帮我。
答案 0 :(得分:2)
这没有真正的解决方案。 Java依靠操作系统来执行低级文件I / O.如果操作系统在重试读取损坏的文件时决定冻结很长时间,那么Java应用程序就无法做到这一点。
如何检测读取错误。是否有任何捕获条款?
如果/ read
操作最终失败,您将获得某种类型的IOException。但是为异常添加一个catch不能解除阻塞的读取请求。
从损坏的磁盘中恢复数据不是您应该尝试在Java中执行的操作。您需要编写可以在磁盘块级别访问磁盘设备的本机应用程序。或者更好的是,使用现有的数据恢复工具。
答案 1 :(得分:0)
当您对read()
和write()
个对象(相应)进行FileInputStream
和FileOutputStream
语句时,原始部分可能会出现IOException
如果从文件系统读取或写入文件系统时出现问题。您可以像捕获FileNotFoundException
一样捕获它,并查看其消息以获取有关特定错误的更多信息。