0

我参考了这个示例并创建了一个 servlet 应用程序。

它与代码中提到的 TMP_DIR 和 DEST_DIR 路径完美配合(我创建了一个tmp在 C 驱动器中命名的文件夹,并且我还在files我的应用程序文件夹中创建了一个文件夹。

现在我将代码转移到一台 linux 机器上,这不起作用,因为那里没有名为 C: 的驱动器。c:\\tmp我尝试在我的应用程序文件夹中将代码替换为/tmp(并创建了一个文件夹 tmp)。但它不起作用。如何使此代码通用?请指教。

4

3 回答 3

2

使用File.pathSeparator获取系统相关的路径分隔符。

编辑:

如果您只想要一个临时目录,请使用File.createTempFile(..)

示例文件路径:http ://www.exampledepot.com/egs/java.io/ConstructFilePath.html

临时文件示例:http ://www.exampledepot.com/egs/java.io/CreateTempFile.html

编辑:

在 Servlet 环境中保存文件:这里

于 2010-11-02T17:42:05.843 回答
2

如果您想要的是一个临时目录,请使用http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html并查找 getTempDirectory()。这应该在任何地方都有效

因此,您需要系统提供的 System Temporary 目录。您可以通过它的路径或通过实际的文件来获得它。(IOUtils 提供了这两种方法)。这里是 IOUtil 文档:getTempDirectory

public static File getTempDirectory()

    Returns a File representing the system temporary directory.

    Returns:
        the system temporary directory.

所以如果你写:

File myTempFile = IOUtils.getTempDirectory();

那么 myTempFile 将是您要写入的位置。

如果某些应用程序按名称要求目录,那么您可以使用 getTempDirectoryPath() 来提供路径名。

在你的例子中,我会写:

private static final String TMP_DIR_PATH = IOUtils.getTempDirectoryPath();

或使用@dogbane 的方法:

private static final String TMP_DIR_PATH = System.getProperty("java.io.tmpdir");

我希望他们给出相同的答案。

如果您仍然感到困惑,请继续询问 - 这就是 SO 的用途!

更新:如果您正在使用文件做任何事情,那么熟悉 Apache 的 FileUtils 和 IOUtils 是值得的。JDK 有几件事情做得不好或自然而然,Apache 提供了更好的支持。

于 2010-11-02T17:46:00.527 回答
2

用于保存临时文件的平台特定目录的位置由属性定义java.io.tmpdir

因此,在您的代码中,您可以使用:

private static final String TMP_DIR_PATH = System.getProperty("java.io.tmpdir")
于 2010-11-02T17:52:23.623 回答