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

}

}

}

相关推荐
Qzer_4079 分钟前
在JVM(Java虚拟机)中,PC寄存器(Program Counter Register)扮演着至关重要的角色,它是JVM执行引擎的核心组成部分之一。
java·开发语言·jvm
星沁城11 分钟前
JVM的垃圾回收机制
java·开发语言·jvm
FF在路上19 分钟前
MybatisPlus使用LambdaQueryWrapper更新时 int默认值问题
java·开发语言·mybatis
gb421528729 分钟前
java中sha256和md5某个字符串实例代码
java·开发语言·哈希算法
三十六煩惱風31 分钟前
Java中常见的锁及其应用场景
java
十年一梦实验室1 小时前
【C++】sophus : test_macros.hpp 用于单元测试的宏和辅助函数 (四)
开发语言·c++·单元测试
Irises`1 小时前
flex自适应页面
开发语言·前端·javascript
Watermelon_Mr1 小时前
Spring(二)AOP、切入点表达式、AspecJ常用通知的类型、Spring中的事务管理
java·后端·spring
出发行进1 小时前
Maven的介绍以及安装,仓库的使用和在idea使用maven
java·大数据·数据分析·maven
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序
开发语言·青少年编程·编程与数学·goweb