首页 > 其他 > 详细

FileWriter, 字符流传输的本质

时间:2020-10-31 16:26:07      阅读:20      评论:0      收藏:0      [点我收藏+]

受狂神的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才疏学浅,有疏漏请随意指出,欢迎讨论解释。

FileWriter, 字符流传输的本质

原文:https://www.cnblogs.com/StudyNing/p/13906314.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!