10

使用 Mac 在 Eclipse 中编译以下代码后:

    import java.io.*;

    public class Filer{
        public static void main(String[] args) throws IOException{

        File f1;

        f1 = new File("/System/file.txt");

        if(!f1.exists()){
            f1.createNewFile();

        }
      }
    }

我收到一个错误:

    Exception in thread "main" java.io.IOException: Permission denied
        at java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.io.File.createNewFile(File.java:883)
        at Filer.main(Filer.java:11)

谁能告诉我这是为什么?有什么办法可以更改权限吗?如果我将其编译为 .jar 文件并将其发送给某人,该人是否拥有正确的权限?

4

2 回答 2

11

谁能告诉我这是为什么?

您的用户无权在该目录中创建文件。

有什么办法可以更改权限吗?

与更改任何目录的权限相同。

在 Java 7+

Files.setPosixFilePermisions(f1.toPath(), 
    EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_EXECUTE));

如果我将其编译为 .jar 文件并将其发送给某人,该人是否拥有正确的权限?

我怀疑一个名为的目录的正确权限/System是您没有写入权限。

有什么理由不使用主目录或当前工作目录?

于 2013-01-03T00:22:38.743 回答
2

只有具有特殊权限的用户才被允许写入系统目录。

普通用户只能在他们的主目录中写入

于 2013-01-03T00:22:12.243 回答