2010-03-29 112 views
8

好吧,我覺得這應該很簡單,但我顯然錯過了用Java編寫文件的基本原理。我有這個:嘗試寫入文件時出現FileNotFound異常

File someFile = new File("someDirA/someDirB/someDirC/filename.txt"); 

我只想寫入文件。但是,雖然someDirA存在,但someDirB(因此someDirC和filename.txt)不存在。這樣做:

BufferedWriter writer = new BufferedWriter(new FileWriter(someFile)); 

拋出FileNotFoundException。那麼,呃,不要開玩笑。畢竟,我正在努力創造它。我是否需要將文件路徑分解爲組件,創建目錄並在實例化FileWriter對象之前創建文件?

回答

16

您必須先創建所有前面的目錄。而here是如何去做的。您需要創建一個代表您想要存在的路徑的File對象,然後在其上調用.mkdirs()。然後確保你的新文件爲create

final File parent = new File("someDirA/someDirB/someDirC/"); 
if (!parent.mkdirs()) 
{ 
    System.err.println("Could not create parent directories "); 
} 
final File someFile = new File(parent, "filename.txt"); 
someFile.createNewFile(); 
+0

謝謝,但上面有一些非事實性的位。首先,你可以在現有的目錄上調用mkdirs(),它只會返回false而不是拋出異常。另外,就我而言,一旦創建目錄,我就可以跳過createNewFile()步驟並直接進入FileWriter步驟。 – 2010-03-29 21:52:50

+1

createNewFile()是多餘的,因此downvoting。 – EJP 2010-03-30 00:25:14

+2

createNewFile()是冗餘的,但代碼的其餘部分工作正常。因此upvoting。 – 2013-05-09 05:43:04

相關問題