2013-01-03 4 views
5

でのファイル作成:アクセス許可が拒否されました:Macを使用しEclipseで次のコードをコンパイルした後のJava

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ファイルとしてコンパイルして誰かに送信すると、その人に正しいパーミッションが与えられますか?

+6

誰もファイルシステムのどこにでも書き込むことはできません。 '/ System'はOS Xと同じように見え、そこに書き込むことができるのはrootだけです。多分別のディレクトリを選んだでしょうか? – miku

答えて

8

Can anyone tell me why that is?

あなたのユーザーがそのディレクトリにファイルを作成する権限がありません。自分のホームディレクトリに書き込むことができます。

Is there any way to change the permissions?

すべてのディレクトリのアクセス許可を変更するのと同じ方法です。

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

And if I were to compile this as a .jar file and send it to someone, would that person have the correct permissions?

私は/Systemと呼ばれるディレクトリのための適切な権限を疑うのJava 7+で

は、あなたが書き込みアクセス権を持っているわけではないということです。

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

+1

また、 'sudo java'を使用してコードを実行します(Eclipse内では動作しないことに同意します)。 '/ System'には書かない方が良い解決策です! –

+0

デスクトップに送信する方が良い方法でしょうか?現在のコンピュータのユーザー名を検出する方法はありますか?すなわち/Users/**usameame**/Desktop/file.txt – hmir

+0

ユーザーのホームディレクトリを使用できます。 'System.getProperty(" user.home ")+"/Desktop "' http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html –

2

ディレクトリには、特別な特権を持つユーザーだけが書き込むことができます。

通常のユーザーにのみ

関連する問題