使用File类和FileOutputStream创建文件有什么区别?

4

大家好,我有一个问题,想用FILE CLASS & FILEOUTPUTSTREAM CLASS创建FILE。我知道使用FILE CLASS需要使用createfile方法来创建特定的文件,当我们使用FILEOUTPUTSTREAM CLASS时,我们在类初始化中传递字符串路径或名称,然后该文件会自动生成。但是这两种情况有什么不同呢?

2个回答

6

File 是一个抽象路径。它没有实际的物理存在。

只有在“使用”该 File 时,才会实际访问底层物理存储。

FileOutputStream 会为您处理文件是否存在、创建、打开等操作。

注意:如果您使用 Java 7,请放弃使用 File,而改用 Path


意味着FILE类用于那些不存在于物理上的对象,而FILEOUTPUTSTREAM则用于已经存在的对象。 - Simmant
不,正如我所说的,FileOutputStream 会为您处理文件创建(这取决于您使用的构造函数)。当您创建一个 File 对象时,您创建了一个抽象路径;底层物理对象可能存在,也可能不存在;只有在使用它时才能确定。 - fge
好的,现在我明白它们之间的区别了 +1 @fge :) - Simmant
尝试使用(BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get("filename"), StandardCharSets.UTF_8)) { ... }。胜利万岁! - EpicPandaForce

0

File类只是文件的句柄。而FileOutputStream则是一个可以写入数据的OutputStreamFileOutputStream JavaDoc

你可以将它们看作是touch myfile.txtecho > myfile.txt的区别。


1
嗯,不,touch实际上会创建文件。 - fge
是的,但我们正在比较File.createNewFile()和通过FileOutputStream创建文件。 - Vlad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接