小汤学编程之JAVA基础day13——I/O流
一、File类
1.构造方法 2.常用方法
二、继承结构图
三、字节流
1.字节输入流 2.字节输出流
四、字符流
1.字符输入流 2.字符输出流 3.字符输入流plus:InputStreamReader
五、扩展:其他流
1.缓冲流 2.转换流 3.数据流 3.对象流
一、File类
File类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。
1.构造方法
(1)由一个完整的路径
File f1 = new File("D:\\ATC\\JAVA20201009\\study\\day20");
(2)由父路径+子路径
File f2 = new File("D:\\", "ATC\\JAVA20201009\\study\\day20");
(3)File对象+子文件(夹)名
File f3 = new File("D:\\ATC\\JAVA20201009\\study\\");
File f4 = new File(f3, "day20/a.txt");
路径的末端可以是文件夹或目录或文件名。
2.常用方法
返回值类型 | 方法 | 说明 |
---|---|---|
String | .getName() | 获取文件(夹)名 |
String | .getPath() | 获取文件(夹)路径 |
boolean | .exists() | 文件(夹)是否存在 |
boolean | .isFile() | 是否是一个文件 |
boolean | .isDirectory() | 是否是一个目录(文件夹) |
boolean | .createNewFile() | 创建一个文件 |
boolean | .mkdir() | 创建一个具体的文件夹 |
boolean | .mkdirs() | 创建多级文件夹 |
boolean | .delete() | 删除某个文件夹 |
String[] | .list() | 返回某个文件夹下的所有文件(夹)名 |
File[] | .listFiles() | 获取某个文件夹下所有的文件(夹) |
二、继承结构图
三、字节流
1.字节输入流
(1)构造方法
new FileInputStream(String 文件路径/File文件对象);
(2)使用步骤
- 使用构造方法创建字节输入流对象
- 调用 .read(byte[] b) 方法,将数据转化为字节存入数组
- 调用 .close()方法 关闭流对象
read方法还有如下两种用法:
.read()
返回一个字节,表示读取一个字节。
.read(byte[] b,int off,int len)
b为要存入的数组,off为存入数组的下标起点,len为读取长度,返回实际存入的字节数。
(3)扩展方法
.available() 返回字节输入流中可读取的字节个数
2.字节输出流
(1)构造方法
new FileOutputStream(String/Flie,boolean);
后面布尔参数可加可不加,若为true,表示往里追加而非覆盖。
(2)使用步骤
- 使用构造方法创建字节输出流对象
- 调用 .write(byte[] b) 方法,将字节数组写入目标文件中
- 调用 .close()方法 关闭流对象
write方法还有如下两种用法:
.write(int b)
写入一个字节数据b。
.write(byte[] b,int off,int len)
b为要输出的数组,off为输出数组的下标起点,len为输出长度。
四、字符流
1.字符输入流
(1)构造方法
new FileReader(String/File);
(2)使用步骤
- 构建流对象
- 调用 .read(char[] c) 方法,将数据转化为字符存入数组
- 调用 .close()方法 关闭流对象
read方法还有如下两种用法:
.read()
表示读取一个字符,返回一个字符,如果没有读到,返回-1。
.read(char[] c,int off,int len)
b为要存入的数组,off为存入数组的下标起点,len为读取长度,返回实际存入的字节数。
2.字符输出流
(1)构造方法
new FileWriter(String/File,boolean);
后面布尔参数可加可不加,若为true,表示往里追加而非覆盖。
(2)使用步骤
- 构建流对象
- 调用 .write(char[] c) 方法,将字符数组写入目标文件中
- 调用 .close()方法 关闭流对象
write方法还有如下四种用法:
.write(int c)
写入一个字符数据c。
.write(String str)
写入一个字符串。
.write(String str,int off,int len)
str为要输出的字符串,off为输出字符串的下标起点,len为输出长度。
.write(char[] c,int off,int len)
c为要输出的字符数组,off为输出字符数组的下标起点,len为输出长度。
3.字符输入流plus:InputStreamReader
InputStreamReader 与普通字节输入流 FlieReader 的区别在于它可以指定编码格式,从而解决普通字节输入流可能会出现的乱码问题。
(1)构造方法
new InputStreamReader(字节输入流对象, charsetName);
charsetName为一段表示编码格式的字符串
(2)使用步骤
使用步骤和方法与字符输入流相同。
五、扩展:其他流
1.缓冲流
由于其带有缓冲区的特性,在进行特定大小内的数据操作时效率会更高。
- BufferedInputStream
- BufferedOutputStream
- BufferedReader
- BufferedWriter
用法:
new BufferedOutputStream(字节输出流对象,int a);
构造方法的第二个参数可以设置缓冲区的大小。
2.转换流
一般用来将字节输入/输出流转换为字符输入/输出流,写成链式。
- InputStreamReader
- OutputStreamWriter
用法:
// 链式写法
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter((new FileOutputStream(""))));
3.数据流
性能提升有限,较少使用。
- DataInputStream
- DataOutputStream
构造方法:
new DataInputStream(new FileInputStream(" "));
4.对象流
可以将对象序列化后保存在文件中,或者从文件中读取对象数据并反序列化为对象。
用法:
//创建对象输出流
ObjectOutputStream oos = new ObjectOutputStream(字节输出流对象);//创建要保存的对象并保存--序列化
oos.writeObject(对象);
oos.close();// 创建对象输入流
ObjectInputStream ois = new ObjectInputStream(字节输入流对象);//读取文件中的对象 -- 反序列化
Person person = (Person)ois.readObject();
小汤学编程之JAVA基础day13——I/O流相关推荐
- 小汤学编程之JAVA基础day12——异常
一.什么是异常 1.程序错误类型 2.异常的分类 3.深入认识异常 二.异常的继承结构 三.常见的异常收集 四.虚拟机对异常的两种处理方式 1.捕获异常 2.声明和抛出异常 五 ...
- 小汤学编程之JAVA基础day05——数组
一.概念 1.什么是数组 2.为什么要用到数组 二.使用方法 1.声明并分配空间 2.赋值 3.处理数据 三.数组的各种应用 1.求数组中最大/最小值 2.数组反 ...
- 小汤学编程之JAVA基础day04——流程结构
一.认识流程图 二.顺序结构 三.选择结构 四.循环结构 五.扩展&代码块的概念 一.认识流程图 二.顺序结构 体现在程序进入某个方法后,从上到下没有分支的顺序执行. 三.选择结构 1.if选 ...
- 小汤学编程之JAVA基础day02——数据类型、Scanner类的使用
一.JAVA的数据类型 1.变量 2.常量 3.基本数据类型 4.引用数据类型 5.数据类型转换 二.Scanner类的使用 1.作用 2.引入 3 ...
- 小汤学编程之JAVA基础day15——枚举、注解和Properties
一.枚举 1.枚举的来由 2.枚举的作用 3.枚举的特点 4.扩展:switch里可以传入哪些类型的值 二.注解 1.作用 2.注解的种类 3.自定义注解 ...
- 小汤学编程之JAVA基础day14——xml和反射
一.xml 1.简介 2.特点 3.使用步骤 二.Reflect反射 1.概念 2.理解Class类 3.反射的功能 4.两个案例 一.xml 1.简介 xml ...
- 小汤学编程之JAVA基础day11——集合框架:List/Set/Map集合、Collections集合工具类、泛型、TreeMap和TreeSet
一.集合的特点 二.继承结构图 三.List集合 1.特点 2.ArrayList类 3.LinkedList类 4.两者的对比 5.集合的遍历 四.Set集合 1.特 ...
- 小汤学编程之JAVA基础day09——常用类(一):比较器、内部类和包装类
一.比较器 1.内部比较器 2.外部比较器 二.内部类 1.成员内部类 2.静态内部类 3.局部内部类 4.匿名内部类 三.包装类 1.概念 2.包装类的应用 ...
- 小汤学编程之JAVA基础day07——面向对象(二):封装、继承与多态
一.封装 1.使用步骤 2.优点 3.包结构 4.访问修饰符 二.继承 1.理解 2.重写 3.final的详解 4.防止被继承的两种方法 三.多态 ...
最新文章
- POJ.3207.Ikki's Story IV-Panda's Trick(2-SAT)
- 在Centos 6.5 上面配置 SVN
- 腾讯云短信出现there are both domestic mobile phone numbers and international mobile phone numbers in the...
- 如何优化WebRTC提升直播体验?
- JAVA UDP网络编程学习笔记
- oracle不属于集合操作,Oracle的几个集合操作
- C语言基础5-预编译部分知识(#include+.h文件和.c文件的区别
- AJAX请求中payload和formdata两种方式
- FFmpeg系列-2-命令行工具之FFmpeg
- linux添加静态ipv6路由,请问如何在CentOS7上配置已经静态路由好的IPv6地址块?
- CCF计算机职业资格认证考试201403-2“窗口”试题及答案
- 10个最佳PHP URL缩短器脚本
- 【华为机试】HJ2 计算某字符出现次数
- 世界杯 叮当 机器人 树莓派_世界杯营销大战,移动互联网谁捧起了大力神杯
- 阿里云直播鉴权和直播地址算法
- scroll-view的描点跳转
- moectf Amazing_eval
- python将txt文件转为字符串_python如何将txt文件转成json数据
- 【宝塔】【Windows】【Blessing-Skin】【我的世界】用宝塔Windows搭建皮肤站
- XGBoost和GBDT
热门文章
- (01)JVM-内存三大核心区域以及分析
- Educational Codeforces Round 39 G Almost Increasing Array
- jquery $(function(){}) $(document).ready(function(){}); (function(){}); 的区别以及作用
- python基础(四)运算
- 【计算机视觉】期刊整理
- 随机生成彩票的shell脚本
- Memcache for Windows
- Windows Phone 8.1 多媒体(3):音乐
- 知识资产投资——《程序员修炼之道》的建议
- 复旦大学提出《Meta-FDMixup》解决跨域小样本学习中的域偏移问题