2011-03-28 58 views
3

這裏是我的代碼的Java讀取一個文件,如果它不存在,創建它

public String path; 
public String fileName; 
public static void readData() throws IOException{ 
    try { 
     path="myPath" 
     fileName="myFileName"; 
     fstream = new FileInputStream(path+fileName); 
     br = new BufferedReader(new InputStreamReader(fstream)); 
     //do something...// 
     } 
     br.close(); 
    } catch (FileNotFoundException ex) { 
     JOptionPane.showMessageDialog(null, "Reading file error"); 
     Logger.getLogger(LeggiDaFile.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

我想知道如何檢查是否存在的fstream。如果它不存在,則必須創建一個新文件。我怎樣才能做到這一點? 謝謝

回答

6

這裏是一個可能的解決方案:

public static void readData() throws IOException 
{ 
    File file = new File(path, filename); 

    if (!file.isFile() && !file.createNewFile()) 
    { 
     throw new IOException("Error creating new file: " + file.getAbsolutePath()); 
    } 

    BufferedReader r = new BufferedReader(new FileReader(file)); 

    try 
    { 
     // read data 
    }finally 
    { 
     r.close(); 
    } 
} 
+0

你可能也想看看使用'InputStreamReader',指定'Charset',而不是使用默認字符集的'FileReader' ... – Jesse 2011-03-28 20:28:22

+0

謝謝Jesse! 你解決了我的問題! – Franky 2011-03-28 21:06:48

1

要檢查文件filename是否存在於path中,您可以使用new File(path, filename).exists()

如果指定的File的文件系統上存在文件或目錄,則exists method返回true。要驗證文件是文件而不是目錄,可以使用isFile method

查看javadoc for java.io.File瞭解更多信息。

+0

甚至更​​好的新文件(路徑,文件名).exists()會自動爲您所在的操作系統插入正確的路徑分隔符。 – Ceilingfish 2011-03-28 20:24:59

+0

好點 - 我編輯了我的答案。謝謝! – Greg 2011-03-28 20:27:07

-1

您已經趕上了FileNotFoundException,這是您知道您想要閱讀的文件不存在並且您可以創建它的地方。

0
if(new File("filename").exists()) 
    ... 

它應該做你想要什麼。

2

缺少某些在你的代碼 - 有沒有對應的左括號右大括號。

但是,爲了回答你的問題,首先要創建一個File對象,並使用exists(),然後createNewFile()如果exists()回報false。將File對象而不是文件名傳遞給構造函數FileInputStream

順便說一句,它會花費你更少的時間來谷歌答案比它在這裏輸入你的問題。

相關問題