如何使用Windows,Mac和Linux的通用文件路径保存文件?

时间:2013-01-27 20:58:14

标签: java

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

例如:

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

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

5 个答案:

答案 0 :(得分:6)

System.getProperty("user.dir");

或者如果您使用的是Java 7

Filesystems.getDefault();

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

答案 1 :(得分: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();
}

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

您可以使用Commons IO中的Apache CommonsFileUtilsFilenameUtils类。

如果您在应用程序中使用路径的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()

答案 4 :(得分:0)

String outputFolder = System.getProperty("user.home") + File.separator + "Documents" + File.separator +"TestandoUnzip";

我需要的代码。谢谢你们。