【问题标题】:Java FileOutputStream Default Creation PathJava FileOutputStream 默认创建路径
【发布时间】:2013-12-17 17:50:55
【问题描述】:

假设我有以下代码:

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

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

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

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

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

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

【问题讨论】:

标签: java


【解决方案1】:

如果您不指定绝对路径,例如如果您只指定文件名,那么您的程序或操作系统需要以某种方式找出该文件的位置。出于这个原因,一个正在运行的程序总是有一个工作目录。默认情况下,这恰好是您启动它的文件夹。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      这与FileOutputStream 的工作方式无关,它与操作系统在启动进程时分配给进程的路径有关

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-05-21
            • 2012-02-02
            • 2021-02-02
            • 1970-01-01
            • 2015-12-17
            • 2013-09-27
            相关资源
            最近更新 更多