第五章:IO流 (java.io包中)

一、理解

  1. 简单而言:流就是内存与存储设备之间传输数据的通道、管道。

  2. 分类:

(1) 按方向(以JVM虚拟机为参照物)【重点】

输入流:将存储设备>中的内容读入到内存>中。

输出流:将内存>中的内容写入到存储设备>中。

(2) 按单位:

字节流:以字节为单位,可以操作所有类型的文件。

字符流:以字符为单位,只能操作文本类型的文件。

(3) 按功能:

节点流:具有基本的读写功能。

过滤流:在节点流的基础上,增加新的功能。

二、字节流

  1. 父类:字节流的父类(抽象类):

(1) InputStream:字节输入流

对应的操作为读操作

功能方法:read方法

(2) OutputStream:字节输出流

对应的操作为写操作

功能方法:write方法

  1. 字节节点流

(1) FileOutputStream:字节节点输出流 、文件字节输出流

构造方法:

FileOutputStream fos = new FileOutputStream("D:\\test56/a.txt");

参数:代表操作文件的路径,如果指定的文件夹不存在,则运行报错,

错误信息为:

java.io.FileNotFoundException: D:\test5\a.txt

(系统找不到指定的路径。);如果指定的文件不存在,

系统自动创建

绝对路径:盘符:\\文件夹\\ 文件

相对路径:文件夹/文件,默认在当前的项目中查找对

应的文件夹内容

功能方法:

write(int n):将单个字节写入文件中

close():关闭流

(2) FileInputStream:文件字节输入流

构造方法:

FileInputStream fis = new FileInputStream("file/c.txt");

参数说明:参数代表操作路径,如果指定的文件不存在,则运行报错,

错误信息为:

java.io.FileNotFoundException: file\c.txt (系统找不到指定的文件。)

功能方法:

int read():一次性读取一个字节内容,将读取的内容作为返回值返回,

达到文件尾部时,返回-1

close():关闭流,释放资源

  1. 字节过滤流

(1) 过滤流:BufferedOutputStream/BufferedInputStream

缓冲流,提高IO效率,减少访问磁盘的次数;

数据存储在缓冲区中,flush是将缓存区的内容写入文件中,也可以直接close。

public class TestFileCopyBuffered {

public static void main(String[] args) throws IOException {

// 1. 创建文件字节输入流+输出流对象

// (1) 创建文件节点流对象

FileInputStream fis = new FileInputStream("D:\\test\\ph.mp4");

// (2) 创建过滤流

BufferedInputStream bis = new BufferedInputStream(fis);

// 写文件

FileOutputStream fos = new FileOutputStream("file/ph_copy.mp4");

BufferedOutputStream bos = new BufferedOutputStream(fos);

// 2. 边读边写

while(true){

int n=bis.read();

if(n==-1) break;

bos.write(n);

}

// 3. 关闭流。释放资源

bis.close();

bos.close();

}

}

三 、 字 符 流

  1. 字 符 流 的 父 类 ( 抽 象 类 ):

**R e a d e r:**字 符 输 入 流

对 应 的 操 作 为 读 操 作

功 能 方 法:r e a d 方 法

**W r i t e r :**字 符 输 出 流

对 应 的 操 作 为 写 操 作

功 能 方 法:w r i t e 方 法

  1. 文件字符流

(1) FileWriter文件字符输出流,继承Writer中的方法:

public void write(int n):将单个字符写入到文件中

(2) FileReader文件字符输入流,继承Reader中的方法:

public int read():一次读取一个字符的内容

  1. 字符过滤流

(1) BufferedReader:

功能方法,readLine():一次性读取一行内容,返回内容为String,

读取达到尾部,返回-1

(2) PrintWriter

println(参数);

  1. 桥转换流

InputStreamReader/OutputStreamWriter:桥转换流;设置 编解码格式

四、File类

  1. IO流:对文件中的内容进行操作。 File类:对文件自身进行操作,例如:删除文件,

文件重新命名等。

  1. 操作:

public class TestFile {

public static void main(String[] args) throws IOException {

File file = new File("file/hh.txt");

/*System.out.println(file.exists());

file.createNewFile();*/

if(file.exists()){

System.out.println("文件存在,则直接使用...");

FileInputStream fis = new FileInputStream(file);

}else{

System.out.println("文件不存在,创建新的文件....");

file.createNewFile();

}

}

}

相关推荐
鬼火儿12 分钟前
15.<Spring Boot 日志>
java·后端
Mos_x13 分钟前
SpringBoot】Spring Boot 项目的打包配置
java·后端
qianbailiulimeng16 分钟前
【Spring Boot】Spring Boot解决循环依赖
java·后端
何中应17 分钟前
Spring Boot解决循环依赖的几种办法
java·spring boot·后端
donotshow18 分钟前
SpringBoot】Spring Boot 项目的打包配置
java·后端
zhangfeng113318 分钟前
亲测有效的mem 流行病预测,时间序列预测,r语言做移动流行区间法,MEM流行病阈值设置指南
开发语言·r语言·生物信息
鬼火儿19 分钟前
Spring Boot 整合 ShedLock 处理定时任务重复
java·后端
王元_SmallA20 分钟前
【Spring Boot】Spring Boot解决循环依赖
java·后端
小圆53130 分钟前
java-learn(9):常见算法,collection框架
java·开发语言·算法
nbsaas-boot42 分钟前
SaaS 租户上下文传播架构
java·架构·saas