2011-11-02 37 views
-1

的存在,我有這樣的小碼Java中,如何查看文件

File source; 
    if (!source.exists()) { 
     source = new File("instances/student"+student.getStudentID()+".data"); 
    } 

問題是,源未初始化。由於整個問題是要檢查它是否存在,我該如何避免這種情況?

回答

7

創建一個File對象。

File source = new File(...); 

你用什麼構造取決於你要如何找到一個文件。一個簡單的路徑String就足夠了。

編輯:剛剛意識到你的困惑的來源可能是你認爲創建File對象將嘗試找到文件或在文件系統上創建它。事實並非如此。只要撥打new File(...)就不會檢查它的存在或嘗試創建它。 File對象只是文件系統中路徑的抽象。它也可以是一個目錄。

+0

等等,你的意思是如果我做新的文件(...)它不會覆蓋現有的文件? – vedran

+0

@vedran準確。它不會對文件系統做任何事情。它只是一個Java對象。只有當你開始調用像exists()這樣的方法時,delete()或者renameTo才能訪問實際的文件。當你想改變內容時,你需要像'FileWriter'這樣的東西。要創建一個不存在的文件,你需要在'File'對象上調用'createNewFile()'。查看[JavaDoc](http://download.oracle.com/javase/6/docs/api/java/io/File.html)以獲取準確信息。 –

1

你可以這樣做:

File f = new File(somepathhere); 
if (!f.exists()) { 
    f = new File("instances/student"+student.getStudentID()+".data"); 
} 

或者你也可以檢查是否f.isFile()

0

你似乎有一種誤解。創建文件不會在文件系統上創建文件。一個File對象只能表示一個文件名。如果您想查看文件是否存在,請創建一個適當名稱的文件並檢查exists()

但是,如果你想覆蓋或追加到一個文件,你甚至不需要所有的。如果要附加,只需創建一個new FileOutputStream(...),並將append參數設置爲true。事先不需要檢查,實際上這不僅僅是浪費時間。