【发布时间】:2017-12-04 22:46:25
【问题描述】:
为什么:
File file = new File("somefile.txt");
PrintWriter printWriter = new PrintWriter(file);
当我们可以直接:
PrintWriter printWriter = new PrintWriter("somefile.txt");
我理解这个概念并理解 File() 构造函数创建文件的抽象,但是将其归结为实际问题,为什么要创建 File 对象然后将其传递给 FileWriter? (或任何其他编写器构造函数)
目的是什么?
【问题讨论】:
-
因为
String不一定表示它是用来表示文件名的。然而,File(以及最近的Path)正是出于这个原因而存在。 -
你能澄清一下吗?所以你说传递给 File 构造函数的字符串.. 还有什么其他用途?没看懂。。
-
因为您误解了
File对象是什么。它不是文件系统上的文件。它只是一个用于处理文件paths(即限定文件名)的包装器/帮助器类。 “创建”File对象不会 在文件系统上创建文件。阅读File的javadoc:文件和目录的抽象表示路径名。 -
该方法只是重载。它主要是为用户提供更舒适的使用
PrintWriter的方式。如果您的文件当前为File对象,则可以直接传递它;如果你有InputStream,你可以使用它;如果你有一个代表路径的String,就使用它。在内部,它们都分解为相同的方法,该方法打开一个InputStream到资源。 -
@Andreas,我完全理解你在说什么,它没有在磁盘上创建物理对象这一事实与我的问题无关。是你不明白我的问题。
标签: java stream java-io filewriter