[英]Why BufferedWriter write() method does not autocast to String
[英]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.type
, log.duration
和log.caloriesburned
是int
值,這意味着您正在調用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.