java i/o 流详解_java I/O流详解
概况
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流详解相关推荐
- java缓冲流 复制文件_java使用缓冲流复制文件的方法
本文实例为大家分享了java使用缓冲流复制文件的具体代码,供大家参考,具体内容如下 [1] 程序设计 /*------------------------------- 1.缓冲流是一种处理流,用来加 ...
- filter java 是单例的吗_JAVA 设计模式之 单例模式详解
单例模式:(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点.单例模式是创建型模式.单例模式在现实生活中应用也非常广泛. 在 J2EE 标准中,S ...
- java环境变量设置详解_JAVA环境变量配置详解(Windows)
JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH. JAVA_HOME指向的 ...
- java反射机制深入详解_Java反射机制深入详解
原标题:Java反射机制深入详解 一.概念 反射就是把Java的各种成分映射成相应的Java类. Class类的构造方法是private,由JVM创建. 反射是java语言的一个特性,它允程序在运行时 ...
- java字符编码详解_Java中字符编码格式详解
一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符, ...
- java所使用的字符集是_Java常用字符集编码详解
Java常用字符集编码详解 Web开发的时候经常会遇到一些字符编码的错误,如页面乱码等问题,所以有必要需对字符编码有所了解,以下是Ricki收集的一些资料(可能不是很全,但希望对你有所帮助) Java ...
- java 网络io详解_Java网络socket编程详解
或许有点长 但是一步步教你 我想你也愿意看7.2面向套接字编程 我们已经通过了解Socket的接口,知其所以然,下面我们就将通过具体的案例,来熟悉Socket的具体工作方式7.2.1使用套接字实现基于 ...
- java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- Java中static的作用详解_java中static作用详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
最新文章
- cout、cerr、clog
- SpringBoot笔记:SpringBoot集成SpringbootAdmin监控
- Spring 嵌套方法AOP不生效问题
- 【剑指offer】面试题31:连续子数组的最大和
- 云计算环境下的应用架构设计
- 12、java中的I/O流(2)
- mpvue微信小程序动画_入门微信小程序
- python界面设计模块_Python+Pycharm+PyQT5可视化程序设计入门
- 9.Springcloud的Hystrix服务熔断和服务降级
- 十分钟快速上手结巴分词
- Word里仅修改字母和数字的字体,不改变标点符号字体
- WESHOP | 基于微服务的小程序商城系统
- arcgis for android(二)显示二维地图
- 支付系统中的设计模式09:组合模式
- android开发笔记之有用软件列表
- 10万镜子反射月光,组成3.6平方公里巨幅头像,谷歌花式纪念登月50年
- Hive的元数据表结构详解(转自lxw1234)
- Android获取联系人权限
- windows黑客编程技术之加密技术:windows自带的加密库
- 事件营销有哪些策略?
热门文章
- c语言中文网 vc++6.0下载量_【新手必看】C语言开发环境,请查收!
- php7.1安装mysqli扩展,centos php7 安装mysqli扩展心得
- linux系统nginx启动不了,nginx启动不了,求大神帮助!
- 忽视大小写函数_使用率低但功能强大的6个Excel函数公式应用技巧解读!
- 谷歌浏览器怎么查看网页源代码 Chrome浏览器网页源代码查看技巧分享
- Highcharts+Spring饼图使用实例
- 彻底搞懂Cookie、Session、JWT和Token
- java createstatement,createStatement参数说明
- c语言中闰年的流程图_C语言-算法与流程图
- 前台为html后台是asp在vs2012中建立什么,Asp.net中后台*.cs与前台JS脚本之间相互调用的几点心得...