2014-01-09 205 views
2

這似乎並不創建文件或文件夾。爲什麼?創建文件最簡單的方法是什麼?

import java.io.*; 
public class file1 
{ 
    public static void main(String[] args) 
    { 

    File text1 = new File("C:/text1.txt"); 
    File dir1 = new File("C:/dir"); 
} 

下面的這個確實創建了一個文件。

import java.io.*; 
public class file3 
{ 
    public static void main(String[] args) 
    { 
    try 
    { 
    FileWriter text1 = new FileWriter("C:/text.txt"); 
    FileWriter dir = new FileWriter("C:/dir"); 
} 
catch(Exception e){} 

    } 
} 

但是,該目錄似乎有一個奇怪的不可用的圖標。

我能做些什麼來創建一個目錄。 什麼是創建文件和文件夾的其他簡單方法。

回答

2

出人意料的是,File類不代表文件。它實際上代表了文件的路徑名......可能存在也可能不存在。

要在Java中創建文件,需要打開它以輸出;例如或者你可以這樣做 - new FileOutputStream("C:/text1.txt")。在這兩種情況下,現有文件將被截斷......除非您使用帶有布爾參數的FileOutputStream,該布爾參數表示打開以供追加。

如果不想寫任何數據,它創建一個文件,你也可以這樣做:

File text1 = new File("C:/text1.txt"); 
    text1.createNewFile(); 

但是,如果該文件尚未將只創建一個新的文件中。

要使用Java創建目錄,請使用File.mkdir()File.mkdirs()方法。

UPDATE

你的評論:

我試圖File dir = new File("C:/dir1").mkdir();它說,不兼容的類型。

這是正確的。 mkdir()方法返回一個boolean來說明它是否創建了該目錄。你需要寫的是這樣的:

File dir = new File("C:/dir1"); 
    if (dir.mkdir()) { 
     System.out.println("I created it"); 
    } 

使用你不熟悉的方法或類之前,請務必仔細閱讀的Javadoc!


一對夫婦更多的事情,你需要知道:

  • 處理,確保文件被關閉的問題,最好的辦法是做這樣的事情:

    try (FileOutputStream os = new FileOutputStream(text1)) { 
         // now write to it 
        } 
    

    流程os將在塊退出時自動關閉。

  • 抓到Exception通常是「壞習慣」。這是總是「壞習慣」趕上Exception,並在處理程序中什麼都不做。這種隱藏了錯誤的證據,並且使您的代碼變得不可預測並且難以調試。

+0

謝謝。我試過File dir = new File(「C:/ dir1」)。mkdir();它說不兼容的類型。發現布爾值,但期望java.io.File。 – user3177527

+0

是catch(IOException e){System.out.print(「bug」);}好嗎? – user3177527

+0

更好。更好的是'catch(IOException e){System.out.print(「unexpected exception:」+ e);}' –

0

如果要創建與File一個目錄,你想這樣:

new File("C:/dir").mkdirs(); 
+0

我試過文件DIR =新的文件( 「C:/ DIR1」)。MKDIR ();但igives一個錯誤。發現布爾,但預期java.io.File – user3177527

+0

嘗試只是行,因爲我寫了它,沒有文件目錄=部分。 –

+0

Thaks很多。我做了新的文件(「C:/ dir2」)。mkdirs();它創建了目錄dir2。爲什麼File dir2 = new File(「C:/ dir2」)。mkdirs();不行? – user3177527

0

有關創建目錄,你可以使用:

if(!text1.exists()){ 
    text1.mkdir(); 
} 

和創建文件使用:

if(!text1.exists()){ 
    try { 
     text1.createNewFile(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

您有潛在的競賽條件... –

+0

謝謝。 text1.exists在哪裏?我如何在C:/?下創建它 – user3177527

+0

這裏'text1'是從你的代碼中變量'File text1 = new File(「C:/text1.txt」);'。 'exists()'是文件的方法,在文檔中閱讀。 – alex2410

相關問題