2011-11-08 211 views
1

我在Windows中使用Java創建文件。這工作:Java,創建文件和文件夾

String newFile = "c:/"+Utilities.timeFormat(); 
... 
some code that creates a folder 

這不起作用:

String newFile = "c:/newDirectory/"+Utilities.timeFormat(); 
... 
some code that creates a folder 
+1

在嘗試寫入新文件之前是否存在newDirectory? – chubbsondubs

+0

第一次運行時(在許多機器上)目錄不存在。第一次後,目錄將被創建。 –

+0

錯誤信息是什麼? –

回答

2

您必須使用File.mkdir()File.mkdirs()方法到create a folder

編輯:

String path="c:/newDirectory"; 
File file=new File(path); 
if(!file.exists()) 
    file.mkdirs(); // or file.mkdir() 

file=new File(path + "/" + Utilities.timeFormat()); 
if(file.createNewFile()) 
    { 
    } 
+0

感謝您提供此信息。看起來我可能需要做的是:1)IF(文件夾不存在){創建文件夾;} 2)將新文件放在文件夾中。 –

0

你能檢查是否有權限創建c:/文件夾?

你能告訴我們堆棧跟蹤嗎?

0

如果「newDirectory」並不存在,你應該使用方法mkdirs()File類之間創建的所有目錄。

1

不知道這是創建目錄的實際代碼:不是的mkdir()

用mkdirs()

+0

+1推薦mkdirs()而不是mkdir() –

0

該目錄不存在的事實可能是爲什麼它不工作,他第一次通過。正如許多人指出的那樣,使用mkdirs()將確保您要寫入的文件在子文件夾中,它將創建它們。現在,這裏是它看起來是這樣的:我不使用+創建一個路徑

File file = new File(new File("c:/newDirectory"), Utilities.timeFormat()); 
if(!file.getParentFile().exists()) { 
    file.getParentFile().mkdirs(); 
} 
OutputStream stream = new BufferedOutputStream(new FileOutputStream(file)); 
try { 
    // put your code here to write the file 
} finally { 
    stream.close(); 
} 

通知。相反,我創建一個File對象,並將它傳遞給父文件和文件的名稱。另外請注意,我不會在父文件和文件名之間放置路徑分隔符。使用File構造函數負責創建路徑的獨立於系統的方式。