关于流的一些看法

一、io理解


1、在java中stream代表一种数据流(源) -->(想像成水龙头)


2、任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象,既然它能产生出数据,我们就可以将数据取出,read()方法 -->(出水龙头)


3、任何有能力接收数据源(流)的javaio对象我们就可以看作是一个OutputStream对象,同样,它能接收数据,我们就可以调用它的接收数据,write()方法 -->(进水龙头)


stream:应该是水龙头里的水资源。


InputStream:是一个出水龙头(把水封装在里头)的一个实物对象,它的read()方法就像出水龙头对象的开关钮,read()一下,就相当于打开了出水龙头的按钮,水就出来了,里面封装的水是什么性质的,你就用相应的容器来装.....


OutputStream:在InputStream理解上反着想就行了 。



二、Java中定义了两种类型的流:字节型,字符型。


字节流:处理字节的输入和输出。包括读写二进制数据等方面的内容。


字符流:处理字符的输入和输出。他采用的是Unicode编码,可以实现国际化。使用字符流的另外一个好处就是:字符流比字节流更有效率。




三、缓冲区


io的缓冲区的存在就是为了提高效率,把要操作的数据放进缓冲区,然后一次性把缓冲区的内容写到目的地,而不是写一次就往目的地写一次.


在这里要注意的是当我们关闭了缓冲区对象实际也关闭了与缓冲区关联的流对象.


1.允许Java程序一次不只操作一个字节,这样提高了程序的性能。由于有了缓冲区,使得在流上执行skip、mark、和reset方法都成为可能


2.使用缓冲区必须关联一个流对象;


3.flush()刷空输出流,并输出所有被缓存的字节。由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。


4.包装流可以层层包装  缓冲流一般被包装到中间层,最后一层一般为功能强大的包装流。


5.close()流操作完毕后必须关闭。 一般关闭的是“最外层的”包装流(可以通过eclipse警告提示发现)。




四、流对象的选择与使用:


1.DataInputStream和DataOutputStream可以读写8大基本数据类型;

2.ObjectInputStream和ObjectOutputStream可以读写对象,对象的必须Serializable,并且只有字节流才有。


3.避免频繁地在字符与字节之间进行转换,最好不要直接使用InputStreamReader和OutputStreamWriter类来读写数据,应尽量使用BufferedWriter类包装OutputStreamWriter类,用BufferedReader类包装InputStreamReader


各位大神如果有什么不同的看法或者意见,欢迎回复,万分感谢...

你可能感兴趣的:(关于流的一些看法)