2016-08-18 87 views
2

MakeDirectory包含構造函數,並在構造函數中創建了一個目錄,並在該目錄內創建了一個文件。但是,即使文件和目錄已經成功生成,我也無法向新創建的文件寫入任何內容。任何人都可以幫我弄清楚爲什麼我不能寫入Anything.txt文件?無法寫入文件,使用File創建的文件類

public class MakeDirectory { 
    MakeDirectory() throws IOException{ 
     // Creates Directory 
     File mydir= new File("MyDir"); 
     mydir.mkdir(); 

     // Creates new file object 
     File myfile = new File("MyDir","Anyfile.txt"); 

     //Create actual file Anyfile.txt inside the directory 
     PrintWriter pr= new PrintWriter(myfile); 
     pr.write("This file is created through java"); 
    } 

    public static void main(String args[]) throws IOException { 
     new MakeDirectory(); 
    } 
} 
+1

您得到了什麼錯誤? –

+0

我沒有得到任何錯誤。文件已成功生成在該特定目錄下,但是當我看到文件Anything.txt時,我總是發現它爲空。不包含單詞或字符串。 – sam

+0

我們可以看到你用來寫入這個文件的代碼嗎? –

回答

2

如果你想使用PrintWriter你需要知道它不會自動沖洗。在您write之後,您需要flush。此外,不要忘記關閉您的PrintWriter

PrintWriter pw = new PrintWriter(myFile); 
pw.write("text"); 
pw.flush(); 
pw.close(); 

Java 7中可用的方法採用了try-with-resources構造。使用此功能,代碼將如下所示:

try (PrintWriter pw = new PrintWriter("myFile")) { 
    pw.write("text"); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
+0

先生...你做了我的一天..最終我得到了答案...它的工作...你想更詳細地闡述它。爲什麼我們需要爲PrintWriter強制刷新和關閉,而不是其他類如FileWriter等等 – sam

+1

當然,你必須刷新,因爲直到你做文本坐在緩衝區。一旦你刷新了緩衝區,文本就會打印在文件中。通過像FileWriter這樣的類,該類可以在寫入時自動調用該函數。 –

+1

哦,這麼好...我會保持這個東西在我的腦海裏...感謝和stackover流是太棒了。我很快就得到了來自java老手的解決方案。再次感謝先生。你做得很好,讓我們理解java的概念。我是新來的,所以無法抗拒自己表達我的感激之情。 – sam

1

隨着BufferedWriter你可以只寫字符串,數組或字符數據直接到文件:

void makeDirectory() throws IOException { 
    // Creates Directory 
    File mydir = new File("MyDir"); 
    mydir.mkdir(); 

    // Creates new file object 
    File myfile = new File("MyDir", "Anyfile.txt"); 

    //Create actual file Anyfile.txt inside the directory 
    BufferedWriter bw = new BufferedWriter(new FileWriter(myfile.getAbsoluteFile())); 
    String str = "This file is created through java"; 

    bw.write(str); 
    bw.close(); 
} 
+0

先生,我試過了,但新創建的文件仍然是空的。文件內沒有任何內容正在寫入。 – sam

+0

我測試了它,它創建了一個帶有「String str」值文本的txt文件。 – DimaSan

+0

先生,我忘記添加聲明關閉和添加後bw.close它爲我工作以及...感謝這麼多 – sam

0

您可以用這種方式這應該與您一起:

public static void main(String[] args) { 
    File file = new File("Anyfile.txt"); 
    try { 
     FileWriter flotEcr = new FileWriter(file); 
     for (char car = 'a'; car <= 'z'; ++car) { 
      flotEcr.write(car); 
     } 
     flotEcr.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
}