3

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

例如:

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

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

4

5 回答 5

6
System.getProperty("user.dir");

或者,如果您使用的是 Java 7

Filesystems.getDefault();

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

于 2013-01-27T21:01:46.053 回答
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();
}
于 2013-01-27T21:14:46.083 回答
1

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

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

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

于 2013-01-27T21:04:25.383 回答
1

您可以将Apache Commons的Commons IO与类和.FileUtilsFilenameUtils

如果您在应用程序中为路径使用 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()
于 2013-01-27T21:55:06.237 回答
0
String outputFolder = System.getProperty("user.home") + File.separator + "Documents" + File.separator +"TestandoUnzip";

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

于 2013-01-27T21:36:45.753 回答