完全意外的事情我几分钟前已经注意到,对于一些不为人知的原因,Java的BufferedWriter
通过更改int
文件中的数字(例如*.txt
)结束了它的工作该文件中的最后一个值为EOT
,FF
,Z
,?
,甚至是{
(对于数字1234
)。在开始将数字写入String
文件之前,我将数字更改为*.txt
时问题就消失了。到底是怎么回事?我找不到任何关于这个案子的好解释,所以我会理解所有的解释。
以下是一个示例代码,有助于演示上述问题:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Zzz {
public static void main(String args[]) {
BufferedWriter writer;
try {
writer = new BufferedWriter(new FileWriter("zzz.txt"));
for (int i = 0; i < 10; i++) {
if (i != 9) {
for (int j = 0; j < 5; j++) {
if (j != 4) writer.write(j + "\t");
else writer.write(j + "\n");
}
} else {
for (int j = 0; j < 5; j++) {
if (j != 4) writer.write(j + "\t");
else writer.write(j);
}
}
}
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
问题本身:
答案 0 :(得分:1)
BufferedWriter#write(int)
获取int
,但会写char
。
writer.write(j + "\t");
中发生的情况是j + "\t"
自动转换为String
,具体而言,取j
的当前值并附加"\t"'
结束。类似于writer.write(j + "\n")
。但writer.write(j)
将j
作为int
,并将j
的int值用作char
。如果这样做,您可以检查特定行为:
int x = 90;
System.out.println((char)x);
输出:
Z