的存在,我有這樣的小碼Java中,如何查看文件
File source;
if (!source.exists()) {
source = new File("instances/student"+student.getStudentID()+".data");
}
問題是,源未初始化。由於整個問題是要檢查它是否存在,我該如何避免這種情況?
的存在,我有這樣的小碼Java中,如何查看文件
File source;
if (!source.exists()) {
source = new File("instances/student"+student.getStudentID()+".data");
}
問題是,源未初始化。由於整個問題是要檢查它是否存在,我該如何避免這種情況?
創建一個File
對象。
File source = new File(...);
你用什麼構造取決於你要如何找到一個文件。一個簡單的路徑String就足夠了。
編輯:剛剛意識到你的困惑的來源可能是你認爲創建File
對象將嘗試找到文件或在文件系統上創建它。事實並非如此。只要撥打new File(...)
就不會檢查它的存在或嘗試創建它。 File對象只是文件系統中路徑的抽象。它也可以是一個目錄。
你可以這樣做:
File f = new File(somepathhere);
if (!f.exists()) {
f = new File("instances/student"+student.getStudentID()+".data");
}
或者你也可以檢查是否f.isFile()
你似乎有一種誤解。創建文件不會在文件系統上創建文件。一個File對象只能表示一個文件名。如果您想查看文件是否存在,請創建一個適當名稱的文件並檢查exists()
。
但是,如果你想覆蓋或追加到一個文件,你甚至不需要所有的。如果要附加,只需創建一個new FileOutputStream(...)
,並將append
參數設置爲true
。事先不需要檢查,實際上這不僅僅是浪費時間。
等等,你的意思是如果我做新的文件(...)它不會覆蓋現有的文件? – vedran
@vedran準確。它不會對文件系統做任何事情。它只是一個Java對象。只有當你開始調用像exists()這樣的方法時,delete()或者renameTo才能訪問實際的文件。當你想改變內容時,你需要像'FileWriter'這樣的東西。要創建一個不存在的文件,你需要在'File'對象上調用'createNewFile()'。查看[JavaDoc](http://download.oracle.com/javase/6/docs/api/java/io/File.html)以獲取準確信息。 –