10

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 ファイルとしてコンパイルして誰かに送信した場合、その人は正しいアクセス許可を持っているでしょうか?

4

2 に答える 2

11

なぜそうなのか誰か教えてもらえますか?

ユーザーには、そのディレクトリにファイルを作成する権限がありません。

権限を変更する方法はありますか?

任意のディレクトリの権限を変更するのと同じ方法です。

Java7以降の場合

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

そして、これを.jarファイルとしてコンパイルして誰かに送信する場合、その人には正しい権限がありますか?

と呼ばれるディレクトリの正しいアクセス許可は、/System書き込みアクセス権がないことだと思います。

ホームディレクトリまたは現在の作業ディレクトリを使用しない理由はありますか?

于 2013-01-03T00:22:38.743 に答える
2

特別な権限を持つユーザーのみがシステムディレクトリに書き込むことができます。

通常のユーザーは自分のホームディレクトリにのみ書き込むことができます

于 2013-01-03T00:22:12.243 に答える