小白自己写的字节流总结,多多批评改正,谢谢。http://blog.csdn.net/jin970505/article/details/78473211
2017-11-08
看了下大家关注的点,个人认为如下:
当创建的数组长度小于要写入的字节时,通过while循环分多次写入,且out.write(buf,0,b),第二次不会覆盖上一次写入的;当某一次循环无字节可读时(读完了),返回-1,此时的b确实等于-1 ,但是此时要结束while循环了。
当然如果你创建的数组容量够大,当然可以不用循环,即一次性读入输入流,再一次性从输出流写入文件:in.read(buf,0,buf.length);
out.write(buf);
当创建的数组长度小于要写入的字节时,通过while循环分多次写入,且out.write(buf,0,b),第二次不会覆盖上一次写入的;当某一次循环无字节可读时(读完了),返回-1,此时的b确实等于-1 ,但是此时要结束while循环了。
当然如果你创建的数组容量够大,当然可以不用循环,即一次性读入输入流,再一次性从输出流写入文件:in.read(buf,0,buf.length);
out.write(buf);
2017-11-06
其他方面,字符流和字节流全都是流式操作,和RandomAccess的随机访问不一样,Random有一个指针,你可以随便指定要访问文件的位置,而且他的实例有很多种操作模式,可以同时实现读写。而字符和字节流则需要两个Out与IN类。
2017-10-26
同样的,
字符流类全部都
继承于Reader和Writer抽象类
OutputStreamReader/writer类
与BufferedWriter/Reader是直接继承于他们的,前者可以设置编码格式,将对应格式的文本文件解码成字符流。后者可以直接读取一整行,但是不会换行。
然后FileWriter和FileReader是直接继承于OutputStreamReader/writer类的,他也封装了一些底层操作,更加方便。但是没有办法设置解码格式,只能按照项目默认的设置解码。
字符流类全部都
继承于Reader和Writer抽象类
OutputStreamReader/writer类
与BufferedWriter/Reader是直接继承于他们的,前者可以设置编码格式,将对应格式的文本文件解码成字符流。后者可以直接读取一整行,但是不会换行。
然后FileWriter和FileReader是直接继承于OutputStreamReader/writer类的,他也封装了一些底层操作,更加方便。但是没有办法设置解码格式,只能按照项目默认的设置解码。
2017-10-26
那个,我总结一下。前面主要讲了字节流和字符流。
字节流都继承于抽象类:InputStream和OutputStream分别用于读入和写出。
然后实现他们的类是:FileInput/OutputStream与BufferOutput/InputStream。但是前者每次只能读取一个字节,这很麻烦。
于是就有了继承他们的类,DataOutputStream和DataInputStream,这个类封装了FileInput/OutputStream的一些底层操作,可以直接输入一个int,string。
而BufferOutput/InputStream可以利用缓冲区,方便快捷的输入输出。
字节流都继承于抽象类:InputStream和OutputStream分别用于读入和写出。
然后实现他们的类是:FileInput/OutputStream与BufferOutput/InputStream。但是前者每次只能读取一个字节,这很麻烦。
于是就有了继承他们的类,DataOutputStream和DataInputStream,这个类封装了FileInput/OutputStream的一些底层操作,可以直接输入一个int,string。
而BufferOutput/InputStream可以利用缓冲区,方便快捷的输入输出。
2017-10-26
所以 if语句应该这么写:if((int)buf[i]>0 && (int)buf[i]<=0xff)
2017-10-21