java中的I/O小结

来源:互联网 发布:pop3服务默认端口 编辑:程序博客网 时间:2024/04/27 23:48
====================================================================================
JAVA IO流(InputStream,OutputStream)
   流按照单位划分为两种:
       字节流:以字节为单位读写
       字符流:以字符为单位读写
       
    字节流:
      InputStream  字节输入流,是抽象类,抽象了应用程序的[读取]数据方式
      OutputStream 字节输出流,是抽象类,抽象了应用程序的[写出]数据方式
      
    字节流与字符流在类名上就容易区分
       字符输入流以Reader结尾,字符输出流一Writer结尾
=======================================================================================
FileInputStream 文件字节输入流
   FileInputStream继承自InputStream,具体实现了对文件的读取数据
   
FileOutputStream 文件输出流
   FileOutputStream继承OutputStream,具体实现了向文件中写数据
=======================================================================================
流分为: 高级流和低级流
 
   低级流:又称为节点流,明确数据源
      不同的单位区分为:字节流和字符流
      
   高级流:称为处理流,过滤流.不能独立存在,而是要依托一个低级流,在低级流的基础上对读写操作进行封装处理的流
   
  判断是否为高级流:
          特征是看这个流的构造方法中是否有包含一个流为参数,若有,这个流就是高级流
          
 DataOutputStream与DataInputStream
 数据字节输出/输入流
   
 BufferedInputStream与BufferedOutputStream
 缓冲字节输入/输出流
 优点:读写效率高
=========================================================================================
字符流(Reader and Writer)(高级流)
   字符流以字符(unicode编码)为单位读写数据.
   本质:还是要转换为字节流(字符流底层依然使用字节形式读写)
   
字节流的基本实现:
   InputStreamReader:完成byte解析为char的流,按照编码解析
   OutputStreamWrite:完成从char编码为byte的流,按照编码解析
   
  如: 
   FileInputStream fis=new FileInputStream("Linux.txt");
/**
* 构造方法:
*  InputStreamReader(InputStream in):以系统默认字符集读取字节流中的字节,并解析字符
*  InputStreamReaser(InputStream in,String charset)
*                以给定的字符集编码读取字节流中的字节,并解析字符(可以防止乱码问题)
*/
InputStreamReader reader=new InputStreamReader(fis,"UTF-8");


BufferedReader:缓冲字符输入流
PrintWriter:缓冲字符输出流


注意:
   对于所有的缓冲输出流,无论是字节流还是字符流都应注意,在所有写操作完成以后,在关闭流之前,应调用流的flush()
   方法,清空缓冲流区(将缓冲区内容全部写出),否则可能会发生数据写出不完整!
==========================================================================================
若读取的内容是纯文本内容,使用字符流,否则尽量使用字节流
原创粉丝点击