Java FileOutputStream默认创建路径

时间:2013-05-09 19:24:18

标签: java

假设我有以下代码:

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

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

但是,如果我在整个路径上具体使用fileName:

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

此文件将在c:\ temp文件夹中创建。

是正确的吗?为什么会发生这种情况,FileOutputStream如何工作?

5 个答案:

答案 0 :(得分:2)

如果您没有指定绝对路径,例如如果你只指定文件名,那么你的程序或操作系统需要弄清楚,在哪里找到该文件。因此,正在运行的程序始终具有工作目录。默认情况下,这恰好是您启动它的文件夹。

答案 1 :(得分:2)

这不是关于FileOutputStream如何工作,而是关于操作系统启动时分配给进程的路径

此路径称为current working directory。从该目录中计算所有relative paths。简单文件名是相对路径(到当前工作目录)。

如果指定absolute path,则此路径用于创建文件。

您可以在this wiki page上阅读有关路径的更多信息。

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

如果只指定文件名,则会在当前工作目录中创建。如果确实指定了绝对路径,那么它当然会在该路径上创建。

答案 4 :(得分:0)

所有关于相对和绝对目录。假设您指定了路径foo/bar。它将在您的工作文件夹的bar目录中创建一个文件foo。同样适用于../foo/bar它将在工作目录上方的文件夹中的bar目录中创建foo文件。但是,如果您键入C:\\Documents\ and\ Settings\User\Desktop\bar(或/home/user/Desktop/bar),则会在桌面上创建bar。有关详细信息,请查看here