2012-07-25 73 views
2

所以我寫這是假設寫兩個鏈表的內容到格式BufferedWriter將不會所有的數據寫入到文件

「標題行1」的文本文件

「程序標題行2"

「標題行3」

X1 Y1

X2 Y2

X3 Y3

...

x1023 y1023

這裏是主要寫代碼:

LinkedList<Double> xVal; 
    LinkedList<Double> yVal; 
    LinkedList<String> header; 
    Analize test; 
    Scanner scan = new Scanner(System.in); 
    FileWriter fstream; 
    BufferedWriter out; 

    int i=1; 
    test = new Analize(i); 
    test.addData(); 
    test.calculate(); 


    //Writing ModY 
    fstream = new FileWriter("BLOCK " +i+"_ModY.txt"); 
    out = new BufferedWriter(fstream); 
    header = test.getHeader(); 
    xVal=test.getXList(); 
    yVal=test.getYListMod(); 


    //Write Header 
    out.write(header.get(0)+"_modY");out.newLine(); 
    out.write(header.get(1));out.newLine(); 
    out.write(header.get(2));out.newLine(); 

    for(int j=0;j<xVal.size();j++) 
    { 
     double x=xVal.get(j); 
     double y=yVal.get(j); 
     out.write(x+"\t"+y+" "+j);out.newLine(); 
     //test code 
     System.out.println(xVal.get(j)+" "+yVal.get(j)+" "+j); 
     //System.out.println(j); 
    } 

的真的很煩人的事情是,測試代碼行: 的System.out .println(xVal.get(j)+「」+ yVal.get(j)+「」+ j); 實際上在System.in中使用正確的值運行了1023次,但該文件只有值高達558。

我真的不知道這裏發生了什麼......

+4

你有沒有同步,然後關閉作家和/或流? – 2012-07-25 23:20:11

回答

14

我沒有看到你打電話out.close();任何地方。這將爲您刷新並關閉底層流。我會在你的for循環之後把它放好。

請務必先關閉流,否則你的一些數據可能會被掛在內存等待JVM一起去和它沖洗出來給你的文件。

+0

非常感謝!我在代碼的其他部分都這樣做了。我無法相信在3小時左右的故障排除後我沒有看到這一點。 – 2012-07-26 01:42:33