2013-05-09 680 views
3

比方说,我有下面的代码:Java的FileOutputStream中默认创建路径

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

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

但是,如果我在整个路径特定文件名:

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

这个文件将在创建在c:\ temp文件夹。

很对?为什么会发生这种情况,FileOutputStream如何工作?

+0

为什么不运行它并查看会发生什么 – 2013-05-09 19:26:06

+1

关闭输出流。 – Tdorno 2013-05-09 19:27:41

+0

我建议你阅读这个Java教程:http://docs.oracle.com/javase/tutorial/essential/io/index.html – Barranka 2013-05-09 19:28:24

回答

1

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

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

1

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

2

如果您未指定绝对路径,例如如果你只指定文件名,那么你的程序或操作系统需要弄清楚,在哪里找到这个文件。出于这个原因,正在运行的程序总是有一个工作目录。这恰好是默认启动它的文件夹。

0

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

2

这不是FileOutputStream的工作原理,它是关于操作系统分配给进程,当它启动时,它

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

如果您指定一个absolute path那么此路径用于创建该文件。

您可以在this wiki page上阅读更多关于路径。