【发布时间】:2014-06-25 09:28:52
【问题描述】:
我有以下代码,在我的课堂上可以很好地逐行读取文件。
try { FileInputStream in = new FileInputStream(filename);
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
String line;
while((line=reader.readLine())!=null){
// read the file
}
}
catch (Exception e) {
System.out.println(e);
}
但是如果我尝试添加命令close,因为在文件完成读取之后,我得到了错误:
in.close();
Error:(131, 9) java: cannot find symbol
symbol: variable in
location: class ReadFile
我搜索了使用后清理对象以及在程序结束之前关闭文件的需要。并找到了几个关于Java的帖子,但很多都是非常矛盾的。关键是到最后我会很困惑。
我错了,还是 Java 编程有点模糊和混乱?我的意思是,destructor 显然没有真正的使用,finalize 的使用是非常值得怀疑的,close 的使用也被建议为不必要的。关于这些问题的一些帖子是矛盾的和非结论性的。
那么,这里如何进行呢?在我真的需要关闭文件的情况下,如何摆脱这个错误信息?关闭文件真的可有可无吗?为程序完成清理类实例怎么样?
【问题讨论】:
-
你在哪个地方打电话给
in.close()?请记住,在 Java 中,范围很重要。 -
@PradeepSimha - 就在 catch 结束之后{}
-
在 try 块之外声明
in。 -
@Vash - 它不是重复的,因为你提到的帖子没有解决我在这里引用的问题,命令“关闭”也没有
-
Java 中没有析构函数。 finalize() 方法确实不是您应该使用或依赖的东西。并且 close() 是绝对需要调用的。使用try-with-resources 语句,了解变量作用域。这是一个在每种语言中都很重要的概念。
标签: java class file-io code-cleanup finalize