我想知道Java的FileInputStream
s(以及FileOutputStream
s)的属性。创建它们时,您可以使用以下任一构造函数:
public FileInputStream(String name) throws FileNotFoundException
public FileInputStream(File file) throws FileNotFoundException
我经常看到(并编写)这样的代码:
InputStream in = new FileInputStream(new File("data.txt"));
你可以看到我在那里创建File
。没有它,我也可以这样做:
InputStream in = new FileInputStream("data.txt");
通过JDK源代码,它们的工作方式似乎没有区别。以下是构造函数的源String
:
public FileInputStream(String name) throws FileNotFoundException {
this(name != null ? new File(name) : null);
}
对于FileOutputStream
,所有这些基本相同。
使用其中一个构造函数是一个我不知道的约定,是否有任何好处? FileInputStream
或FileOutputStream
答案 0 :(得分:1)
虽然第一个构造函数FileInputStream(String name)
可能更常使用,但它只是第二个,FileInputStream(File file)
,它允许使用File
准确检查输入文件在我们将它与InputStream
链接之前的类方法。
此外,创建FileOutputStream
类对象的过程不依赖于是否存在适当的文件。当您创建FileOutputStream
类的对象时,它将在打开文件之前创建一个文件以供将来编写。但是打开只读文件的尝试会引发异常。