我在简单测试io流实现文件的复制粘贴及特殊字符时,突然想改变写法,但是结果却出乎我的意料,想了好久还是没想明白,那个大神可以指点指点老弟!感激不尽!!!
这是正确的代码和复制后的文档:
这是不正常的代码和文档:
正常的进行复制后输出的文档大小和原来的一样,不正常的文档会变的巨大,我也把 -1 改成 0 试过一样的不行。
不正常代码竟然没有死循环?
问题在
希望对你有所帮助
正常的代码 while每次进来时候的read是变化的,不正常的read只读了一次,然后while一直是true
正常的代码是一直读一直写,结束就停止;错误代码是只读了第一次的值,里面有东西肯定不是-1,然后就是死循环,一直往里面写入第一次读取的值。
fileInputStream.read 这个方法才是读取流的过程
a = fileInputStream.read() 里 a 的 值是当前这次循环读到的字节数, 如果不等于 -1 表示这次循环有读到数据
你改成 read = fileInputStream.read()
while (read != 1)
这样只读了前2048个字节 而且read != -1 的判断一直成立
所以会一直向 test2 输出 test1 的前 2048个字节