3

私のコードはファイルに書き込みます。ファイルへの書き込み中にアクセス拒否エラーが発生します。

Files.write(path, myString.getBytes());

休閑地は例外

FAILED to write to file.
java.nio.file.AccessDeniedException: 
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
    at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:229)
    at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:430)
    at java.nio.file.Files.newOutputStream(Files.java:170)
    at java.nio.file.Files.write(Files.java:3058)
4

1 に答える 1

1

申し訳ありませんが、これは完全な回答ではありませんが、質問へのコメントには収まりませんでした。お役に立てば幸いです。

https://superuser.com/questions/342276/cannot-save-in-hard-disk-drive-cから

Windows XP以降、システムパーティションのルートディレクトリは、管理者権限がないと書き込むことができません。ただし、セキュリティ上の理由から、WindowsVistaおよびWindows7は、管理者としてログオンしている場合でも、この特権レベルに明示的に昇格されていない限り、デフォルトでは管理者権限を付与しません。UACプロンプトをクリックする必要がある場合があります。

のルートに書き込もうとしてC:\いないので、権限の問題ではないと思います。おそらく、別のアプリケーションがファイルをロックしている可能性があります。.txt別のアプリケーション(メモ帳など)でを開きましたか?

開いているファイルハンドルを確認する1つの方法は、 ProcessExplorerを使用することです。Ctrl+を使用Fしてファイルのフルパスまたは名前を検索すると、ProcessExplorerはファイルへのハンドルが開いているすべてのプロセスを一覧表示します。Ctrl+を使用して任意のアプリケーションのすべてのハンドルを表示できH、ここからハンドルを閉じることもできます。注:ハンドルを閉じるときにアクセス拒否のアクセス許可を取得した場合は、[ファイル]→[すべてのプロセスの詳細を表示]を選択して、再試行してください。

于 2012-11-15T09:11:26.630 に答える