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

时间:2013-01-03 00:19:22

标签: java file file-io

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

2 个答案:

答案 0 :(得分:9)

  

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

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

  

有没有办法更改权限?

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

在Java 7 +中

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

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

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

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

答案 1 :(得分:2)

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

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