Java FileOutputStream 默认创建路径

4

假设我有以下代码:

String fileName = "name.txt";
FileOutputStream fileOut = new FileOutputStream(fileName);
wb.write(fileOut);

这样,文件将会被创建在项目的bin文件夹下。

然而,如果我指定了完整路径下的文件名:

String fileName = "c:/temp/name.txt";

这个文件将会被创建在 c:\temp 文件夹中。正确吗?为什么会这样,FileOutputStream 是如何工作的?

为什么不运行它,看看会发生什么。 - Sam I am says Reinstate Monica
1
关闭你的输出流。 - Tdorno
我建议你阅读这个Java教程:http://docs.oracle.com/javase/tutorial/essential/io/index.html - Barranka
5个回答

3

重点不在于FileOutputStream的工作原理,而在于操作系统在启动进程时分配给进程的路径。

这个路径称为当前工作目录。从该目录计算所有相对路径。一个简单的文件名是相对路径(相对于当前工作目录)。

如果指定了绝对路径,则使用该路径创建文件。

您可以在此维基页面上阅读有关路径的更多信息。


2

除非您指定绝对路径,否则路径将相对于当前工作目录。

如果您当前的工作目录是项目中的 bin 文件夹,则它将在那里创建。


2

如果您没有指定绝对路径,例如只指定文件名,则您的程序或操作系统需要找出该文件的位置。因此,运行程序始终有一个工作目录。默认情况下,这个目录就是您启动程序的文件夹。


1
如果你只指定文件名,它将会在当前工作目录中创建。如果你指定了绝对路径,它当然会在该路径下创建。

0

这涉及到相对路径和绝对路径。假设你指定了路径 foo/bar,它将在你的工作文件夹的 foo 目录中创建一个名为 bar 的文件。对于 ../foo/bar 也是同样的道理,在工作目录的上一层文件夹中创建一个名为 bar 的文件。然而,如果你输入 C:\\Documents\ and\ Settings\User\Desktop\bar (或 /home/user/Desktop/bar),它将在你的桌面上创建一个名为 bar 的文件。如需更多信息,请查看这里


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