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

hmi*_*mir 9 java file-io file

使用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();

        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

    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)
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*rey 10

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

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

有没有办法更改权限?

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

在Java 7+中

Files.setPosixFilePermisions(f1.toPath(), 
    EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_EXECUTE));
Run Code Online (Sandbox Code Playgroud)

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

我怀疑被调用目录的正确权限/System是您没有写访问权限.

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