小汤学编程之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();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值