【问题标题】:How can I save a file with a generic file path for Windows, Mac and Linux?如何使用适用于 Windows、Mac 和 Linux 的通用文件路径保存文件?
【发布时间】:2013-01-27 20:58:13
【问题描述】:

我有一个应用程序需要创建一个文件夹来解压缩一些文件,但我想传递一个文件路径,我的应用程序可以在任何操作系统中运行、创建和保存我的文件,但我不知道应该是什么输出路径。

例如:

File folder = new File(outputFolder);
if (!folder.exists()) {
    folder.mkdir();
}

我应该在 outputFolder 中使用什么路径来在任何操作系统(Windows、mac 或 linux)的 Documents/UnzipTest 中创建我的文件夹?

【问题讨论】:

  • 查看this 答案和下面的答案。它应该有帮助。 (我觉得下面这个更有帮助)

标签: java


【解决方案1】:
System.getProperty("user.dir");

或者如果您使用的是 Java 7

Filesystems.getDefault();

将为您提供工作的基本目录。

【讨论】:

    【解决方案2】:

    使用java.io.File#separator :

    String userHome = System.getProperty("user.home");
    String outputFolder = userHome + File.separator + "dir1";
    File folder = new File(outputFolder);
    if (!folder.exists()) {
       folder.mkdir();
    }
    

    【讨论】:

      【解决方案3】:

      我会为 root 文件夹定义一个属性(例如在一些外部属性文件中),因此用户可以在设置后或安装期间为所有操作定义什么是根文件夹.

      其他选项是使用用户文件夹(又名主文件夹)作为这个根文件夹(或者如果上面的属性没有定义),在系统属性user.dir中定义.或者使用安装您的应用程序的文件夹 - 您可以找到它,例如通过在应用程序 jar 中查找一些资源,然后从返回的 URL 解析路径。

      定义了根文件夹后,可以使用构造函数new File(rootFolder, outputFolder);您可以简单地在outputFolder 中使用斜杠作为路径(例如/foo/bar)。这样的路径适用于所有操作系统。

      【讨论】:

        【解决方案4】:

        您可以将Apache Commons 中的Commons IOFileUtilsFilenameUtils 类一起使用。

        如果您在应用程序中为路径使用 UNIX 样式,则可以使用以下方法将路径转换为 ​​SO 样式:

        org.apache.commons.io.FilenameUtils.separatorsToSystem(String)
        

        如果您只想在不存在的情况下创建目录:

        org.apache.commons.io.FileUtils.forceMkdir(File)
        

        如果你有一个目录的路径,可能你需要在这个目录下新建一个文件夹,你可以使用获取完整路径的方法来连接:

        org.apache.commons.io.FilenameUtils.concat(String, String)
        

        返回的路径总是规范化的,包含系统格式的分隔符。

        可能需要用户目录路径:

        org.apache.commons.io.FileUtils.getUserDirectory()
        

        【讨论】:

          【解决方案5】:
          String outputFolder = System.getProperty("user.home") + File.separator + "Documents" + File.separator +"TestandoUnzip";
          

          我需要的代码。谢谢大家。

          【讨论】:

            猜你喜欢
            • 2019-01-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-25
            • 1970-01-01
            • 2014-01-02
            • 2017-02-04
            相关资源
            最近更新 更多