FileWriter, 字符流传输的本质
作者:互联网
受狂神的IO流讲解的启发,尝试了如下的代码,发现了很有意思的事情。
public static void main(String args[]) throws IOException {
FileWriter fw = null;
fw = new FileWriter("test.txt");
for (int i = 0; i < 100000; i++) {
fw.write(i);
fw.write(" ");
}
}
一个字符(char)是两个字节(2 bytes),也就是16个bits,可以储存2^16=65536个数。狂神尝试了用FileWriter写入0-60000的数字,从中看出“执行的过程中应该使用了“(char)c”进行强制转换,即把整数转换成字符来显示。因为打开写入数据的文件可以看到,里面显示的数据并不是0~60000内的整数,而是不同国家的文字的表示方式”。
那我就有点好奇了,要是超出范围会怎么样呢?于是尝试了上面的代码,发现文件里的内容在大概三分之二处重复了。猜测是因为数字过大,导致出现了第17位,也就是 1 xxxx xxxx xxxx xxxx。而程序把那个1给忽略掉了。
之后又尝试了一下用FileReader去读取test.txt,发现读出来比100000要少。而且输进去60000个和100000个少的还不一样多。感觉知识储备支撑不了继续想下去了哈哈,应该涉及到底层的东西了。
以上就是一个简单的小实验,初学cs才疏学浅,有疏漏请随意指出,欢迎讨论解释。
标签:尝试,字符,xxxx,fw,传输,60000,100000,FileWriter 来源: https://www.cnblogs.com/StudyNing/p/13906314.html