权限被拒绝:Java中的文件创建

使用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文件并将其发送给某人,那么该人是否拥有正确的权限?

谁能告诉我为什么会这样?

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

有没有办法更改权限?

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

在Java 7+中

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

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

我怀疑对于名为/System的目录的正确权限是您没有写访问权限。

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

只允许具有特殊权限的用户在System目录中写入。

普通用户只能在其主目录中写入