其他分享
首页 > 其他分享> > FileWriter, 字符流传输的本质

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