Java 为什么新文件()不应该放在try块中,而新文件读取器(“input.txt”)应该放在try块中?
我正在学习如何用java读取文件。这种差异困扰着我。我认为有一个明显的区别,我不太清楚Java 为什么新文件()不应该放在try块中,而新文件读取器(“input.txt”)应该放在try块中?,java,Java,我正在学习如何用java读取文件。这种差异困扰着我。我认为有一个明显的区别,我不太清楚 File inputFile = new File("input.txt"); // is perfect fine even if input.txt doesn't exist. Why? // but FileReader fr = new FileReader("input.txt"); // should be put into try.. catch block?? or compiler er
File inputFile = new File("input.txt");
// is perfect fine even if input.txt doesn't exist. Why?
// but
FileReader fr = new FileReader("input.txt");
// should be put into try.. catch block?? or compiler error
因为
newfilereader(“文件”)
会抛出选中的异常FileNotFoundException
,而newfilereader(“文件”)
不会
请注意,
newfile
不会检查文件是否实际存在,而FileReader
会检查。因为newfilereader(“文件”)
会抛出选中的异常FileNotFoundException
其中newfile(“文件”)
不会
请注意,newfile
不会检查文件是否实际存在,而FileReader
会检查文件是否存在。因为它只是一个表示文件名的对象:
文件和目录路径名的抽象表示
而a是用于读取文件内容的开放资源,并实现:
不再需要时必须关闭的资源
因为它只是一个表示文件名的对象:
文件和目录路径名的抽象表示
而a是用于读取文件内容的开放资源,并实现:
不再需要时必须关闭的资源
文件(“input.txt”)
尚未提交到实际文件。因此,您可以测试该文件是否存在,或者在以后打开该文件进行写入。而FileReader(“input.txt”)
实际上试图打开命名文件进行读取,因此可能引发异常。文件(“input.txt”)
尚未提交到实际文件。因此,您可以测试该文件是否存在,或者在以后打开该文件进行写入。而FileReader(“input.txt”)
实际上试图打开命名文件进行读取,因此可能会引发异常。技术原因是一个构造函数引发非运行时异常,而另一个构造函数则不会
为什么呢?可能是因为File类只是围绕文件系统路径名的抽象。文件是否存在于该路径并不重要。FileReader封装实际文件系统对象上的读取操作,并在文件不存在或无法打开读取时引发异常。技术原因是一个构造函数引发非运行时异常,而另一个构造函数则不会 为什么呢?可能是因为File类只是围绕文件系统路径名的抽象。文件是否存在于该路径并不重要。FileReader封装实际文件系统对象上的读取操作,如果文件不存在或无法打开读取,则引发异常