2013-12-11 67 views
0

當我在Java中創建的文件,它會創建一個文件夾與文件名+文件類型「擴展」,例如文件串製作目錄,而不是文件名

String path = "C:"+File.separator+"hello"+File.separator+"hi.txt"; 
File f = new File(path); 
f.mkdirs(); 
f.createNewFile(); 

這個例子中創建一個文件夾或目錄名爲「hi.txt」,而不是我所期望的文件。爲什麼這不是製作文件?

+1

'f.getParentFile()mkdirs();'。 –

+1

這是什麼問題? –

+0

它應該如何區分何時創建文件和文件夾(參考'mkdirs')?文檔說:'創建由這個抽象路徑名命名的目錄。 –

回答

1

正如你所說的f.mkdirs();首先創建了一個具有給定路徑的目錄。首先創建使用f.getParentFile().mkdirs()父目錄,然後使用f.createNewFile()創建文件:

String path = "C:"+File.separator+"hello"+File.separator+"hi.txt"; 
File f = new File(path); 
f.getParentFile().mkdirs(); 
f.createNewFile(); 
0

你先指示VM創建目錄f,然後創建文件f。你想創建父目錄的f,而不是目錄f

File parent = f.getParentFile(); 
boolean ret = parent.mkdirs(); 

現在,您應該檢查ret,只是爲了知道是否有任何錯誤。

0

您想創建父代路徑C:\hello\hi.txt,即C:\hello,然後創建文件本身。

如果您使用的是Java 7,實現這一目標的最明顯的方法是使用PathsFiles如下:

Path path = Paths.get("C:", "hello", "hi.txt"); 
Files.createDirectories(path.getParent()); 
Files.createFile(path); 
相關問題