在使用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目录中写入。
普通用户只能在他们的主目录下写