Java(IO-字节流/字符流,缓冲流,NIO介绍)

目录

一.IO流的分类

二.字节流/字符流

三.缓冲流

四.NIO


一.IO流的分类

IO流:
 *     根据流的流向分类:
 *         Input:输入流
 *         Output:输出流
 *     根据流操作的数据来分类
 *         字符流: 操作字符
 *             只能操作普通文本文件,
 *                 最常见的文本文件:.txt,.java,.c,.cpp等其他语言的源代码
 *                 只要用文本工具(记事本,notepad++,editplus) 可以打开的 ,而且打开后我们人类能看懂的 都是文本文件
 *                 注意:我们用的.doc,excel,ppt这些不是文本文件
 * 
 *         字节流: 操作字节
 *             能操作一切文件(文本文件,.mp3,视频.avi,.rmvb,mp4,doc,excel,ppt)
java中的四大流:
 *         字符输入流:共同父类 Reader   比如:FileReader,BufferedReader
 *                 功能:读取一个字符,读取一个字符数组
 * 
 *         字符输出流:共同的父类 Writer    比如:FileWriter BufferedWriter
 *                 功能:写一个字符,写一个字符数组(一部分),写一个字符串
 * 
 *         字节输入流:共同父类 InputStream  比如:FileInputStream,BufferedInputStream
 *                 功能:读取一个字节,读取一个字节数组
 *     
 *         字节输出流:共同父类 OutputStream 比如:FileOutputStream,BufferedOutputStream
 *                 功能:写一个字节,写一个字节数组(一部分)

二.字节流/字符流

FileInputStream:
 *             读取数据方法: read
 *                 public int read();
 *             输入流标准代码
 *                 int b = 0;
 *                 while((b=fis.read())!=-1){
 *                     syso((char)b);
 *                 }
 *                 public int read(byte[] bs);
 *             输入流标准代码
 *                 byte[] bs = new byte[1024];
 *                 int len = 0;
 *                 while((len=fis.read(bs))!=-1){
 *                     String s = new String(bs,0,len);
 *                     syso(s);
 *                 }
FileOutputStream:方法名write
 *                 public void write(int b)//一次写一个字节
 *                 public void write(byte[] bs)//一次写一个字节数组
 *                 public void write(byte[] bs,int startIndex,int len)//一次写一个字节数组的一部分

ps:字符流和字节流用法类似,只是声明不同。

三.缓冲流

缓冲流: 相比较没有缓冲区的流,效率更高
 *         BufferedOutputStream 缓冲输出流
 *             构造方法摘要 
 *             public BufferedOutputStream(OutputStream out)  

 *         BufferedInputStream  缓冲输入流
 *             构造方法摘要
 *             public BufferedInputStream(InputStream in

四.NIO

1.阻塞与非阻塞。在以前的Java IO中,都是阻塞式IO,NIO引入了非阻塞式IO。

2.流与块。原来的 I/O 以流的方式处理数据(每次读一个字节/字符),而 NIO 以块的方式处理数据(每次读一个块)。

3.通道与流 。通道可以用于读、写或者同时用于读写;而流只是在一个方向上移动(一个流必须是 InputStream 或者 OutputStream 的子类)。

4.缓冲区Buffer 。在 NIO 库中,所有数据都是用缓冲区处理的。 (一定的缓冲区可以加快处理速度) 

你可能感兴趣的:(java)