概况

I/O流主要分为二大类别:字符流和字节流。

字节流(基本流)

1、字节输入流    类名:FileInputStream    特点:读(对文件进行读取操作)    父类:InputStream

2、字节输出流    类名:FileOutputStream 特点:写 (对文件进行写入操作)    父类:OutputStream

字符流(基本流)

1、字符输入流    类名:FileReader   特点:读(对文件进行读取操作)     父类:InputStreamReader

2、字符输出流    类名:FileWriter       特点:写 (对文件进行写入操作)    父类:OutputStreamWriter

缓冲流

字节缓冲流

1、缓冲字节输入流  类名:BufferedInputStream    特点:读(对文件进行读取操作)  父类:FilterInputStream

2、缓冲字节输出流  类名:BufferedOutputStream  特点:写 (对文件进行写入操作)  父类:FilterOutputStream

字符缓冲流

1、缓冲字符输入流  类名:BufferedReader    特点:读(对文件进行读取操作)  父类:Reader   (基本输入流多了

2、缓冲字符输出流  类名:BufferedWriter      特点:写 (对文件进行写入操作)  父类:Writer    (比基本输出流多了

转换流

1、InputStreamReader     特点:读 (对文件进行读取操作) 输入流    父类:Reader

2、OutputStreamWriter    特点:写 (对文件进行写入操作) 输出流    父类:Writer

打印流

1、PrintStream        特点:写 (对文件进行写入操作)     底层:基本字节流

2、PrintWriter          特点:写 (对文件进行写入操作)     底层:基本字符流

基本字节流和基本字符流的区别:

1、字节流可以读写任何文件      字符流只能读取普通文件

2、读写文本文件尽量使用字符流   这要比字节流效率高

3、读写媒体文件用字节流

4、基本字节流没有缓冲区

5、基本字符流有缓冲区  默认大小为8k (不能指定缓冲区大小)

6、字节流是一个一个字节读  效率比较低  虽然可以读取各种各样的文件但是 最适用于读取媒体文件

7、字符流是一个一个字符读 效率比较高

缓冲流和基本流的区别:

1、缓冲流效率要高于基本流

2、缓冲字符流弥补了基本字符流不能设置缓冲区大小的缺口

3、缓冲字节流和基本字节流相比   建议使用基本字节流

4、缓冲字符流和基本字符流相比  建议使用缓冲字符流

转换流的作用

转换流的作用主要是解决在进行读写操作时出现的中文乱码  (java默认处理文件时是gbk  当将文本文件保存为utf-8的时候 进行读写操作就会出现中文乱码)

API图

用法总结:

1、多媒体类    用字节流

读:基本字节输入流

写:基本字节输出流

2、文件文件   用字符流

读:建议用字符缓冲输入流

写:建议用字符缓冲输出流    如果写的数据多种多样的建议用打印流(PrintStream、PrintWriter)

3、比较明显意图的数据流

读写对象只能用对象流(ObjectInputStream、ObjectOutputStream)

如果在读写文件的过程中遇到中文乱码只能用转换流(InputStreamReader、OutputStreamWriter)

简单实例:

复制较小文件代码:

复制较大文件代码:

利用递归查找某个目录下的视频文件

java i/o 流详解_java I/O流详解相关推荐

  1. java缓冲流 复制文件_java使用缓冲流复制文件的方法

    本文实例为大家分享了java使用缓冲流复制文件的具体代码,供大家参考,具体内容如下 [1] 程序设计 /*------------------------------- 1.缓冲流是一种处理流,用来加 ...

  2. filter java 是单例的吗_JAVA 设计模式之 单例模式详解

    单例模式:(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点.单例模式是创建型模式.单例模式在现实生活中应用也非常广泛. 在 J2EE 标准中,S ...

  3. java环境变量设置详解_JAVA环境变量配置详解(Windows)

    JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH. JAVA_HOME指向的 ...

  4. java反射机制深入详解_Java反射机制深入详解

    原标题:Java反射机制深入详解 一.概念 反射就是把Java的各种成分映射成相应的Java类. Class类的构造方法是private,由JVM创建. 反射是java语言的一个特性,它允程序在运行时 ...

  5. java字符编码详解_Java中字符编码格式详解

    一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符, ...

  6. java所使用的字符集是_Java常用字符集编码详解

    Java常用字符集编码详解 Web开发的时候经常会遇到一些字符编码的错误,如页面乱码等问题,所以有必要需对字符编码有所了解,以下是Ricki收集的一些资料(可能不是很全,但希望对你有所帮助) Java ...

  7. java 网络io详解_Java网络socket编程详解

    或许有点长 但是一步步教你 我想你也愿意看7.2面向套接字编程 我们已经通过了解Socket的接口,知其所以然,下面我们就将通过具体的案例,来熟悉Socket的具体工作方式7.2.1使用套接字实现基于 ...

  8. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  9. Java中static的作用详解_java中static作用详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

最新文章

  1. cout、cerr、clog
  2. SpringBoot笔记:SpringBoot集成SpringbootAdmin监控
  3. Spring 嵌套方法AOP不生效问题
  4. 【剑指offer】面试题31:连续子数组的最大和
  5. 云计算环境下的应用架构设计
  6. 12、java中的I/O流(2)
  7. mpvue微信小程序动画_入门微信小程序
  8. python界面设计模块_Python+Pycharm+PyQT5可视化程序设计入门
  9. 9.Springcloud的Hystrix服务熔断和服务降级
  10. 十分钟快速上手结巴分词
  11. Word里仅修改字母和数字的字体,不改变标点符号字体
  12. WESHOP | 基于微服务的小程序商城系统
  13. arcgis for android(二)显示二维地图
  14. 支付系统中的设计模式09:组合模式
  15. android开发笔记之有用软件列表
  16. 10万镜子反射月光,组成3.6平方公里巨幅头像,谷歌花式纪念登月50年
  17. Hive的元数据表结构详解(转自lxw1234)
  18. Android获取联系人权限
  19. windows黑客编程技术之加密技术:windows自带的加密库
  20. 事件营销有哪些策略?

热门文章

  1. c语言中文网 vc++6.0下载量_【新手必看】C语言开发环境,请查收!
  2. php7.1安装mysqli扩展,centos php7 安装mysqli扩展心得
  3. linux系统nginx启动不了,nginx启动不了,求大神帮助!
  4. 忽视大小写函数_使用率低但功能强大的6个Excel函数公式应用技巧解读!
  5. 谷歌浏览器怎么查看网页源代码 Chrome浏览器网页源代码查看技巧分享
  6. Highcharts+Spring饼图使用实例
  7. 彻底搞懂Cookie、Session、JWT和Token
  8. java createstatement,createStatement参数说明
  9. c语言中闰年的流程图_C语言-算法与流程图
  10. 前台为html后台是asp在vs2012中建立什么,Asp.net中后台*.cs与前台JS脚本之间相互调用的几点心得...