流的分类:1)数据方向:输入流与输出流
2)数据类型:字节流与字符流
3)数据功能:节点流与过滤流
当用到流时首先考虑是输入流还是输出流。
输入流:inputstream,所有字节输入流的父类,几个通用的方法:int read(),int read(byte[]),int read(byte[],int,int),void close(),int available(),void skip(long)...
输出流:outputstream,所有字节输出流的父类,几个通用的方法:void write(),void write(byte[]),void write(byte,int,int),void close(),void flush()...
过滤流:datainputstream,dataoutputstream.输入输出各种类型数据,writeboolean(bool):以1字节传送;writebyte(byte):以1字节传送;writechar(char):以2字节传送;writeint(int):以8字节传送;writedouble(double):8字节;writelong(long),writelong(long)...writeutf(string).
objectinputstream,objectoutputstream对象输入输出流.处理持久化网络方面用的比较多一些。object o = new object();
fileoutputsteam fos = new fileoutputstream("object.txt");
objectoutputstream oos = new objectoutputstream(fos);
oos.writeobject(o);
oos.close();
objectoutputstream与objectinputstream相反。
buffedinputstream,bufferedoutputstream过滤流,可以增加一个缓存,提高io的效率,内存速度还是比硬盘快很多的。属于牺牲空间换时间。
pipedinputstream,pipedoutputstream:管道流,用于线程之间的通信。
字符流:reader,writer。字节流与字符流的区别是:一个以字节为单位一个以字符为单位。java中字符是16位的unicode字符,所以8位的字节流必
须和16位的字符流进行转换。ascii编码:一个字符占1字节,并且所有的编码都兼容ascii。iso8859-1:一个字符占1字节。gb-2312/gbk:一个字符占2字节.unicode:一个字符占2字节(网络传送速度慢)。uft-8:变长,一个字符占1哥字节,一个汉字占2—3个字节。硬盘:filereader,filewriter;键盘:new inputstreamreader(system.in);内存:chararrayreader,chararraywriter。
字节流:硬盘fileinputstream,fileoutputstream;键盘:system.in,system.out;内存:bytearrayinputstream,bytearrayoutputstream.
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
3717

被折叠的 条评论
为什么被折叠?



