gpt4 book ai didi

java - 为什么 BufferedWriter write 方法会产生不同的结果?

转载 作者:行者123 更新时间:2023-12-01 16:36:47 27 4
gpt4 key购买 nike

我不明白为什么这两种实现会产生不同的结果?

具有预期结果的方法:

    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 );
}
}

数据文件结果

乔、、、@

弗雷德,,{,ö

为什么将 out.write 语句分成单独的行会导致输出产生奇怪的结果?每个方法都会传递一个带有对象的数组引用,该对象存储要写入的字符串、短、短短数据类型的结果。

最佳答案

我假设 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 block 中关闭编写器,这样即使出现异常,它也会关闭。

关于java - 为什么 BufferedWriter write 方法会产生不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8189325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com