6

我的程序做了一些相当密集的操作,所以我使用一个临时文件来加快速度。我使用以下 Java 代码:

File scratchFile = new File(System.getProperty("java.io.tmpdir") + "WCCTempFile.tmp");
if (!scratchFile.exists())
    scratchFile.createNewFile();

此代码在 Mac OS X 和 Windows 上运行良好。它在 Java 临时目录中创建一个临时文件,该目录由操作系统确定。

但是,当我在 Linux(特别是 Linux Mint)上尝试这个程序时,我在“scratchFile.createNewFile()”行上收到以下错误

java.io.IOException: Permission Denied

我真的对这个错误感到困惑,因为我认为该System.getProperty("java.io.tempdir")方法收集的临时目录将是用户可以写入的目录(并且它位于其他操作系统上)。这不是在 Linux 上的情况吗?有没有办法授予对临时目录的访问权限?我应该使用其他目录吗?

4

2 回答 2

11

在 Linuxjava.io.tmpdir上通常设置为/tmp(注意缺少的尾随 /)。与其乱用额外的嵌入斜线,不如使用两参数 File 构造函数更简洁

File scratchFile = new File(System.getProperty("java.io.tmpdir"),"WCCTempFile.tmp");

这样您就不必担心是否有斜杠。

于 2013-02-13T01:39:49.967 回答
-1

如果您有权限,您可以使用chmod.

于 2013-02-13T01:35:34.727 回答