2014-04-17 134 views
0

新的文件創建在新目錄中的新文件:創建文件夾的Java

File logFile = new File("C:/test/test/test.txt"); 
logFile.getParentFile().mkdirs(); 
logFile.createNewFile(); 

如果我阿恩嘗試創建新的文件(內部消除文件擴展名,只有「測試」文件):

File logFile = new File("C:/test/test"); 
logFile.getParentFile().mkdirs(); 
logFile.createNewFile(); 

我得到:

FileNotFoundException異常(訪問被拒絕)

+0

沒有錯在你的代碼給FileNotFoundException異常。你是否在不同的用戶上運行該程序? – Mani

+0

我想,創建對象有什麼問題。我嘗試創建具有類似目錄名稱的對象。我認爲這是一個問題,但我不知道它是如何解決的。 – viartemev

+0

mkdirs() - 首先它會檢查目錄是否存在。如果存在,則返回false。所以這不是問題,如果你的目錄已經存在 – Mani

回答

3

在現代版本的Windows中,普通用戶無權訪問c:/,無需管理權限。你的代碼看起來很好(就mkdirs()的使用而言),但我認爲你會遇到這個問題。

嘗試建立在C目錄:\用戶\ YourUserName代替 - 這是與缺乏管理權限寫入到c Java程序的問題:\

+0

問題不在於此。我嘗試在D:/中創建新文件,結果類似。 – viartemev

+0

你是什麼用戶?你確定你有寫入這些文件夾的權限嗎?你有沒有試過寫我自己的用戶目錄?您遇到的錯誤非常簡單:訪問被拒絕意味着您沒有權限執行您正在嘗試執行的操作。 – FrobberOfBits

+0

當我運行第一個代碼時,創建目錄和文件。這意味着,我有權創建文件,不是嗎? – viartemev

1

簡單:C:/test/test是現有目錄,createNewFile會失敗的。這個例外只是一個非常令人誤解的名字,FileNotFoundException

(而且一般createNewFile()是不需要的,但我把它之後,你只打開文件進行追加。)

+2

「C:/ test/test /」是一個現有的目錄。不是C:/ test/test/test。根據他給出的代碼 – Mani

+0

@Mani你是對的;一個測試太多了。更正 –

+0

我編輯的問題,我嘗試創建:「C:/測試/測試」 – viartemev