第五章: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();

}

}

}

相关推荐
胡斌附体1 分钟前
微服务调试问题总结
java·微服务·架构·调试·本地·夸微服务联调
珊瑚里的鱼4 分钟前
第九讲 | 模板进阶
开发语言·c++·笔记·visualstudio·学习方法·visual studio
bing_15811 分钟前
Spring MVC HttpMessageConverter 的作用是什么?
java·spring·mvc
未来之窗软件服务14 分钟前
人体肢体渲染-一步几个脚印从头设计数字生命——仙盟创梦IDE
开发语言·ide·人工智能·python·pygame·仙盟创梦ide
笨蛋不要掉眼泪20 分钟前
SpringAOP
java·数据库·spring·log4j
Echo``21 分钟前
40:相机与镜头选型
开发语言·人工智能·深度学习·计算机视觉·视觉检测
lisw0539 分钟前
R语言的专业网站top5推荐
开发语言·r语言
清同趣科研39 分钟前
扩增子分析|R分析之微生物生态网络稳定性评估之节点和连接的恒常性、节点持久性以及组成稳定性指数计算
开发语言·r语言
oioihoii1 小时前
C++23 新增的查找算法详解:ranges::find_last 系列函数
java·算法·c++23
纨妙1 小时前
python打卡打印26
开发语言·python