使用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文件并将其发送给某人,那么该人是否拥有正确的权限?
答案 0 :(得分:9)
谁能告诉我为什么会这样?
您的用户无权在该目录中创建文件。
有没有办法更改权限?
与更改任何目录的权限的方式相同。
在Java 7 +中
Files.setPosixFilePermisions(f1.toPath(),
EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_EXECUTE));
如果我将其编译为.jar文件并将其发送给某人,该人是否拥有正确的权限?
我怀疑名为/System
的目录的正确权限是您没有写访问权。
有没有理由不使用主目录或当前工作目录?
答案 1 :(得分:2)
只允许具有特殊权限的用户在系统目录中写入。
普通用户只能在其主目录中写入