您的位置:首页 > 编程语言 > Java开发

java中的IO流

2016-04-22 17:27 211 查看

IO流

 i = input = 输入  o = output = 输出

 什么是流?

  流是数据从源点通向汇点的管道

 

 流的分类:

  按照方向分: 输入流 输出流

  按照单位分: 字节流 字符流

  按照功能分: 节点流 过滤流

    *:过滤流 = 包装流 = 处理流

*:所有的流 都需要在使用结束之后关闭流  close();

抽象类

InputStream 所有字节输入流统一的父类(抽象类)

 int read()

 int read(byte[] data)

 int read(byte[] data,int off,int len)

OutputStream 所有字节输出流统一的父类(抽象类)

 write(int data)

 write(byte[] data)

 write(byte[] data,int off,int len)

FileInputStream  输入流 字节流 节点流

 *:构造方法允许传入String或者File

 *:一定要保证连接的是个文件 绝对不能连接目录 否则直接异常

 *:最常用的read是那个带数组参数的read(byte[] data)

FileOutputStream 输出流 字节流 节点流

 *:构造方法允许传入String或者File

 *:节点输出流创建对象的时候 其连接的文件即便不存在 也会自动创建

   如果文件已经存在 也会被新的空白文件替换(当心哦 会替换!)

 createNewFile()  不需要去调用

 *:如果节点输出流连接的目录结构都不存在 它是不能创建的 而会直接异常

 mkdirs()

 *:节点输出流构造方法的第二个参数 允许传入一个布尔值

 代表是否追加模式打开目标文件

 *:无论何时何地 千万不要让输入流和输出流同时连接同一个文件

 否则怎么都是错!

 *:跟输入流不同 输出流最常用的方法 不是单个参数的write(byte[])

 而是三个参数的write(byte[] data,int off,int len) 

 否则会出现“尾巴”

===============================================================

*: 它们能给原本的节点流添加缓冲空间

 从而大幅度的提高每次读写的吞吐量 进而提高效率...

*: 作为过滤流 它是不允许直接连接数据的源点或者汇点的(不能连接文件)

 只能连接其他的流

*: 构造方法的第二个参数允许指定缓冲空间的大小 默认只有8192字节 = 8K

 当我们读取的文件很大的时候 需要自定义大小

BufferedInputStream 字节流 输入流 过滤流

  *: 注意要使用三个参数的read(byte[] data,int off,int len)

 单参read()并没有利用缓冲空间...

BufferedOutputStream 字节流 输出流 过滤流

  *: 在无法关闭流的情况下 一定注意清空缓冲区...

 缓冲区什么条件下清空?

  1.满了自动清空

  2.关闭流的操作会触发清空缓冲

  3.手动调用flush() 主动清空缓冲

================================

FileReader fr = new FileReader("focus.txt");

  FileWriter fw = new FileWriter("sucof.txt");

  //如果直接使用这两个流是无法完成按行读取的

  BufferedReader br = new BufferedReader(fr);

  BufferedWriter bw = new BufferedWriter(fw);

  String str;

  while((str = br.readLine())!=null){

   bw.write(str);

   bw.newLine();//写出一个由系统决定的换行标识

  }

  br.close();

  bw.close();


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java io流