-3

このコードがエラーを引き起こすのはなぜaccess deniedですか?

public void armazenaPerfil() throws FileNotFoundException, IOException {    
    FileOutputStream out = new FileOutputStream(this.login + "_perfil.mbk");
    ObjectOutputStream objOut = new ObjectOutputStream(out);          
    objOut.writeObject(this);
    System.out.println("Escrevi!");
    objOut.close();
}

エラーメッセージ:

ric93_perfil.mbk(acess denied)

java.io.FileNotFoundException

at java.io.FileOutputStream.open(Native Method)

at java.io.FileOutputStream.<init>(FileOutputStream.java:212)

at java.io.FileOutputStream.<init>(FileOutputStream.java:104)

at br.uefs.ecomp.myBook.model.Perfil.armazenaPerfil(Unknown Source)
4

1 に答える 1

1

アクセス拒否の問題は、基本的にオペレーティングシステムが「あなたはそれを書くことは許可されていません」と言っています。基本的に、OS レベルのアクセス制御/権限の問題により、指定された場所でファイルの読み取りまたは書き込みが妨げられています。

相対パス名を使用してファイルを書き込む場合、JVM は、実行中のアプリケーションの現在の作業ディレクトリに相対的な場所にファイルを書き込もうとします。どのディレクトリになるかは、JVM の起動方法によって異なりますが、コマンドを使用してコマンド プロンプトから起動する場合はjava、コマンド シェルの現在のディレクトリになります。

ブレンダン・ロングが提案したワンライナーを使用して、現在のディレクターが実際に何を使用しているかを確認できます。

System.out.println(new File(pathname).getAbsolutePath());

wherepathnameは、読み書きしようとしていたファイルのパス名です。これは、パス名が既存のファイルを参照していることを実際にチェックしたり、ファイルを作成または開くことができるはずであることを通知したりしないことに注意してください。ファイルの絶対パス名が何であるかを示すだけです

于 2012-06-18T01:17:08.133 に答える