web-dev-qa-db-ja.com

Java-アクセスは拒否されましたJava.io.FileNotFoundException

私は次のコードを持っています:

List<FileItem> items = uploadHandler.parseRequest(request);
for (FileItem item : items) {
    if (!item.isFormField()) {
        File file = new File("D:/Data");
    }
}

ファイルを保存しようとすると、次のエラーが表示されます

Java.io.FileNotFoundException: D:\Data (Access is denied.)

理由は何ですか?これを解決するにはどうすればよいですか?このフォルダに対する読み取りおよび書き込み権限があります。

36
Jåcob

新しいFileを作成するときは、ファイルを配置するディレクトリだけでなく、ファイル名を指定することになっています。

のようなもので試してください

File file = new File("D:/Data/" + item.getFileName());
63
Julien

この質問の正確なケースではありませんが、役立つ場合があります。親ではなく新しいファイルでmkdirs()を呼び出すと、この例外が発生しました

File file = new Java.io.File(path);
//file.mkdirs(); // wrong! 
file.getParentFile().mkdirs(); // correct!
if (!file.exists()) {
    file.createNewFile();
} 
19
yurin

この問題を検索しましたが、次の回答がありました。

  1. "C:\Program Files\Apache-Tomcat-7.0.69\"余分なバックスラッシュを削除(\
  2. Tomcatフォルダーのログフォルダーを右クリックし、セキュリティタブでこのフォルダーを書き込み許可として指定し、管理者として実行してnet-beansを再起動します。

あなたの問題は解決されます

6
user5855037

ユーザーコントロールのアクセス許可を設定する必要があります。

  1. C:\ Program Files \に移動します
  2. Javaフォルダを右クリックして、プロパティをクリックします。セキュリティタブを選択します。
  3. そこにある[編集]ボタンをクリックすると、[Java]ウィンドウの権限がポップアップします。
  4. [追加]をクリックすると、新しいウィンドウがポップアップ表示されます。その場合、[オブジェクト名を入力]ボックスにユーザーアカウント名を入力し、[OK]をクリックします(既に存在する場合は、この手順をスキップします)。
  5. これで、「Javaの許可」ウィンドウに、CREATOR OWNER、SYSTEMなどのクリック可能なオプションが表示されます。その中にはユーザー名があります。それをクリックし、サブウィンドウのアクセス許可でフルコントロールオプションにチェックマークを付けます。
  6. 最後に、適用をクリックして大丈夫です。
4
Subrata

ディレクトリが存在することを確認し、アクセスする権限があり、ログに書き込むためにファイルをパスに追加します。

File file = new File("D:/Data/" + item.getFileName());
4
Stepan