2014-05-07 29 views
0

我試圖讓使用java的目錄和文件與文件對象爲:Java的「文件」對象不使目錄和文件

import java.io.*; 
class CreateFile{ 

    public static void main(String[] args) throws IOException{ 
     File f = new File("File/handling/file1.txt"); 
     if(!f.exists()) 
      f.createNewFile(); 
    } 
} 

但其示值誤差(見下文),並不能製作它,路徑和文件名在執行前不存在。我不知道我哪裏錯了,有人請澄清最新的錯誤以及如何解決它?這可能是我需要了解一下文件對象,所以請不要告訴我...

看到錯誤:

Exception in thread "main" java.io.IOException: The system cannot find the path 
specified 

    at java.io.WinNTFileSystem.createFileExclusively(Native Method) 
    at java.io.File.createNewFile(File.java:947) 
    at CreateFile.main(CreateFile.java:6) 
+3

如果你主動迴避的javadoc,你-never-將是一個有效的Java程序員。學會喜歡API文檔。 http://docs.oracle.com/javase/7/docs/api/java/io/File.html – Gimby

+0

@Gimby:謝謝你的建議......我需要它.... :) –

+0

感謝您的服用它有如此好的精神。下面是另一條建議:您可以配置您正在使用的任何IDE,以便能夠在IDE中顯示標準API類/方法的javadoc。沒有谷歌/書籤。 – Gimby

回答

4

錯誤是告訴你,要麼沒有相對於沒有File目錄你正在運行這個,或者有,但它沒有handling子目錄。在這種情況下,exists返回false,因此您請撥打createNewFile來嘗試創建該文件,但您嘗試創建該文件的目錄不存在,因此會引發異常。

您可以使用mkdirs在必要時創建目錄,比如:

import java.io.*; 
class CreateFile{ 

    public static void main(String[] args) throws IOException{ 
     File f = new File("File/handling/file1.txt"); 
     if(!f.exists()) { 
      f.getParentFile().mkdirs(); // This is a no-op if it exists 
      f.createNewFile(); 
     } 
    } 
} 
+0

不,「文件/處理」路徑不存在,但不是File對象創建完整目錄/文件路徑爲「文件/處理/ file1.txt」?我需要在運行時創建完整路徑... –

+0

@AnkurShah:不,「createNewFile」不會創建*目錄*。它創建一個*文件*。如果它不能,因爲你已經告訴它把文件放在一個不存在的地方,它會告訴你(通過例外)。因此,上面的改變,確保目錄存在之前嘗試創建文件。 –

+1

現在我明白了!...謝謝@ T.J.Crowder ... :) –