【发布时间】:2010-05-27 18:45:24
【问题描述】:
为 Java 家庭作业作业编写了一个基本文件处理程序,当我收到作业时,我有一些关于未能捕获一些实例的注释:
- 文件中的缓冲区可能为空。
- 找不到文件
- 文件流未关闭
这是用于打开文件的代码块:
/**
* Create a Filestream, Buffer, and a String to store the Buffer.
*/
FileInputStream fin = null;
BufferedReader buffRead = null;
String loadedString = null;
/** Try to open the file from user input */
try
{
fin = new FileInputStream(programPath + fileToParse);
buffRead = new BufferedReader(new InputStreamReader(fin));
loadedString = buffRead.readLine();
fin.close();
}
/** Catch the error if we can't open the file */
catch(IOException e)
{
System.err.println("CRITICAL: Unable to open text file!");
System.err.println("Exiting!");
System.exit(-1);
}
我从他那里得到的一条评论是 fin.close(); 需要在 finally 块中,而我根本没有。但我认为我创建 try/catch 的方式可以防止文件无法打开的问题。
让我澄清一些事情:这不是针对当前的作业(不是试图让别人做我自己的工作),我已经创建了我的项目并已对其进行评分。我自己并没有完全理解教授的推理。最后,我没有太多Java经验,所以我有点困惑为什么我的catch不够好。
【问题讨论】:
-
虽然在长时间运行的程序中关闭系统资源很重要(当然最好练习一下),但如果你要关闭文件,这有点争议在你的 catch 块中调用
System.exit。 -
@jasonmp85 这就是我的想法,但是看起来他确实希望我们标记它,就好像它会一直运行一样。现在这对我来说很有意义。
标签: java filehandle