【问题标题】:Should a File be created explicitly when creating a stream?创建流时是否应显式创建文件?
【发布时间】:2014-07-28 21:12:43
【问题描述】:

我想知道 Java 的 FileInputStreams(以及 FileOutputStreams)的属性。创建它们时,您可以使用以下任一构造函数:

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,所有这些基本相同。

使用其中任何一个构造函数是我不知道的约定吗?两者都有什么好处吗? FileInputStreamFileOutputStream 是不同的情况吗?

【问题讨论】:

  • 我认为 FileInputStream(String name) 只是为了方便。
  • @holap 那么使用任何一个都没有真正的好处或区别吗?
  • FileInputStream(File file) 无论如何都会被调用,所以没有没有区别。只需使用哪种情况更方便您的情况。
  • @holap 好的。添加它作为答案,我会接受它。 :D
  • 不接受单行回答 :) 还是谢谢你。

标签: java file conventions fileinputstream fileoutputstream


【解决方案1】:

虽然第一个构造函数FileInputStream(String name)可能用得更频繁,但它只是第二个构造函数FileInputStream(File file),它允许在我们链接之前使用File类方法准确检查输入文件与InputStream

此外,创建FileOutputStream 类对象的过程不依赖于相应文件的存在或可能缺少。当您创建FileOutputStream 类的对象时,它将在打开它以供将来写入之前创建一个文件。但是尝试打开只读文件会抛出异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    相关资源
    最近更新 更多