2012-11-15 12 views
3

我的代碼寫入文件,寫入文件時出現拒絕訪問錯誤。我該如何修復Java 7 Files.write錯誤?

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) 
+1

看起來像寫入文件和/或目錄的權限問題。參見['java.nio.file.AccessDeniedException'](http://docs.oracle.com/javase/7/docs/api/java/nio/file/AccessDeniedException.html)。你可以使用['File.canWrite()'](http://docs.oracle.com/javase/7/docs/api/java/io/File.html#canWrite%28%29)來檢查用戶代碼正在運行,可以訪問文件系統的該部分。你想在'C'驅動器上創建一個目錄嗎? – andyb

+1

AccessDeniedException實際上意味着您沒有權限訪問該文件。 – svz

+2

「路徑」的內容是什麼?其他程序是否可以鎖定該文件? – jlordo

回答

1

對不起,這不是一個完整的答案,但它不適合在關於這個問題的評論。我希望它有幫助。

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

由於Windows XP的系統分區的根目錄不能寫入沒有管理員權限。但是,出於安全原因,即使以管理員身份登錄,Windows Vista和Windows 7也不會默認授予管理員權限,除非明確提升爲此權限級別,這可能需要您點擊UAC prompt

由於您不是試圖寫入C:\的根目錄,我不認爲這是一個權限問題,所以也許另一個應用程序鎖定了該文件。您是否在另一個應用程序(例如記事本)中打開了.txt

檢查打開file handles的一種方法是使用Process Explorer。您可以使用Ctrl + F並搜索文件的完整路徑或名稱,並且Process Explorer將列出具有該文件的打開句柄的所有進程。您可以查看任何應用程序的所有手柄使用Ctrl + H甚至從這裏關閉句柄。注意:如果您在關閉句柄時獲得拒絕訪問權限,請選擇文件→顯示所有進程的詳細信息並重試。

相關問題