IO流

来源:互联网 发布:官路淘宝txt下载 编辑:程序博客网 时间:2024/05/01 00:59
//File:文件;档案;文件夹;
首先 file类用于创建文件地址,不是真实的地址只是在内存中写出这个地址是一种抽象路径。
File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。
实际的物理地址不一定存在。可以使用file.exist检验是否存在,无返回false。

//IO可以分为那些流?
//根据方向
输入流
输出流
//数据类型
字节流
字符流
//功能
节点流
处理流
----------------------------------------------------------------------------------
字节流:InputStream输入字节流、OutputStream输出字节流。//字节流的基类
字符流:Reader字符输入流、Writer字符输出流。 //字符流的基类

1、读写的单位不同。
字节流是以字节(8bit)为单位的。
字符流是以字符为单位的,根据字符码表映射的字符,一次可能读取多个字节。
2、处理的对象不同。
字节流处理所有类型的数据,包括图片、音视频等。
字符流只能处理字符型的数据。
//字符流 = 字节流 + 编码/解码功能
 默认使用GBK
 //编码
 String s1 = "中国";
 byte[] b1 = s1.getBytes("UTF-8");
 //解码
 String s2 = new String(b1, "UTF-8");
 
 字符输出流 Writer 内部维护了一个1KB的字符数组
   往文件中写数据时,会先将数据存放在缓冲字符数组中
   以下几种情况发生时才会真正写到文件中去
   1、缓冲数组满了
   2、调用flush方法
   3、当流关闭时 (调用流的close方法)

//功能
节点流
处理流
节点流:可以从或向一个特定的地方(节点)读写数据本身具有读写能力。如FileReader
 
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。
如BufferedReader。提高读写效率。
//缓冲流 --一种处理流
缓冲流:本身都不具备读写文件的能力,必须借助其他的流去实现文件的读写,同时可能会拓展一些功能,也会读写效率
缓冲流内部都维护了一个8KB数组,为了提高读写效率
 //缓冲字节输入流
 BufferedInputStream
 //缓冲字节输出流
 BufferedOutputStream
 //缓冲字符输入流
 BufferedReader
 //缓冲字符输出流
 BufferedWriter

原创粉丝点击