簡體   English   中英

為什么BufferedWriter寫入方法產生不同的結果?

[英]Why does BufferedWriter write method produce different results?

我不明白為什么這兩個實現產生不同的結果?

具有預期結果的方法:

    private void writeToFile(WorkoutLog log){
        try {
        BufferedWriter out = new BufferedWriter(new FileWriter("src/exercise/textfile2.txt", true));

        out.write(log.name.toString() + ", " + log.type + ", " + log.duration + ", " + log.caloriesburned + "\n");
        out.close();
    }catch (IOException e) {  
        System.out.println("error writing record to text file " + e );
    }
}

數據文件結果

吉姆,1,123,246

邁克,3,12,24

吉姆,4,50,100

喬尼,5,40,80

結果異常的方法:

    private void writeToFile2(WorkoutLog log){
    try {
        BufferedWriter out = new BufferedWriter(new FileWriter("src/exercise/textfile2.txt", true));

        out.write(log.name.toString());
        out.write(", ");
        out.write(log.type);
        out.write(",");
        out.write(log.duration);
        out.write(",");
        out.write(log.caloriesburned);
        out.write("\n");
        out.close();
    }catch (IOException e) {  
        System.out.println("error writing record to text file " + e );
    }
}

數據文件結果

喬,,,@

fred,,{,ö

為什么將out.write語句分成幾行會導致輸出產生奇怪的結果? 每個方法都將傳遞一個帶有對象的數組引用,該對象將結果存儲為string,short,short short數據類型。

我假設log.typelog.durationlog.caloriesburnedint值,這意味着您正在調用BufferedWriter.write(int)重載。 那只寫一個字符。 我懷疑您只需要:

out.write(log.name.toString());
out.write(", ");
out.write(String.valueOf(log.type));
out.write(",");
out.write(String.valueOf(log.duration));
out.write(",");
out.write(String.valueOf(log.caloriesburned));
out.write("\n");

請注意,您應該在finally塊中關閉編寫器,以便即使有異常也可以將其關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM