我想知道 Java 的 FileInputStream(以及 FileOutputStream)的属性。创建它们时,您可以使用以下构造函数之一:
public FileInputStream(String name) throws FileNotFoundException
public FileInputStream(File file) throws FileNotFoundException
我经常看到(并编写)这样的代码:
InputStream in = new FileInputStream(new File("data.txt"));
您可以看到我在那里创建了一个文件
。没有它我也可以做到:
InputStream in = new FileInputStream("data.txt");
从 JDK 源代码来看,它们的工作方式似乎几乎没有区别。以下是采用 String
的构造函数的源代码:
public FileInputStream(String name) throws FileNotFoundException {
this(name != null ? new File(name) : null);
}
所有这些与 FileOutputStream
基本相同。
使用其中一个构造函数是否是我不知道的约定,两者都有什么好处吗? FileInputStream
或 FileOutputStream
的情况是否不同?
最佳答案
尽管第一个构造函数 FileInputStream(String name)
可能更常用,但它只是第二个构造函数,即 FileInputStream(File file)
,它允许在我们将输入文件与 InputStream
链接之前,使用 File
类方法准确检查输入文件。
此外,创建FileOutputStream
类对象的过程不依赖于适当文件的存在或可能缺乏。当您创建 FileOutputStream 类的对象时,它将在打开文件以供将来写入之前创建一个文件。但尝试打开只读文件将引发异常。
关于java - 创建流时是否应该显式创建文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995617/