javaSE_day12 学习笔记 —— IO流

IO流

1. File类

  • 创建对象时,不能创建文件夹和文件,只是对文件的一个描述

1.1 构造方法创建对象的三种格式

//构造方法创建对象的三种格式
	public static void test1(){
		File file = 
				new File("c:\\a\\b\\a.txt");//方式1
		File file2  = 
				new File("c:\\a\\b","a.txt");//方式2
		
		File path = 
				new File("c:\\a\\b");
		File file3 = 
				new File(path,"a.txt");//方式3
		System.out.println(file+","+file2+","+file3);
	}

1.2 文件夹的创建和删除

  • mkdir:创建一个文件夹
  • mkdirs:创建多个文件夹
  • delete:删除一个文件夹,若有多个文件夹,则delete多次即可
    在这里插入图片描述

1.3 创建文件

  • exists():判断文件是否存在
  • createNewFile():新建文件
    在这里插入图片描述

1.4 常用方法

在这里插入图片描述

2. IO: Input 、 Output

在这里插入图片描述

2.1 分类

  1. 按照流的读写方式
    字节流

    • InputStream:由abstract修饰 ,(字节流输入的父类)
    • OutputStream 由abstract修饰,(字节流输出的父类)

    字符流

    • Reader : 由abstract修饰 ,(字符流输入的父类)
    • Writer 由abstract修饰,(字符流输出的父类)

都由abstract修饰,本身不能创建对象

  1. 按照流的方向
    输入流、输出流

  2. 按照是否能直接操作数据文件
    节点流:直接在构造方法中来传入要读写的文件对象或文件名。
    处理流:不能直接在构造方法中来传入要读写的文件对象或文件名。(套接)

2.2 核心方法

  • 输入流的核心方法:read()
  • 输出流的核心方法:write()

2.3 操作的数组类型

  • 字节流:byte类型
  • 字符流:char类型

2.4 使用步骤

(1)选择流类(输入还是输出)
(2)确定方法(read还是write)
(3)关闭流 close(如果有缓冲区flush,则刷新缓冲区)

2.5 字节流

2.5.1 文件字节流——FileInputStream和FileOutputStream

  • 可直接指向读写文件
  • 如果是输出流,文件不存在,则自动创建文件
  • 如果是输入流,不能自动创建文件,则需手动创建文件
    FileOutputStream
    FileInputStream
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.5.2 对象字节流——ObjectInputStream 和ObjectOutputStream

用ObjectinputStream读写对象时要求对象所在的类是序列化的类。

  • 对象的序列化:把对象转换成二进制的流,写到数据文件
  • 对象的反序列化:将数据文件中二进制的流代表的数据恢复为对象
  • 序列号:在 序列化存储/反序列化读取或者是序列化传输/反序列化接收 时,JVM 会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。
  • 实现序列化:只需实现Serializable接口(标识性接口)
    在这里插入图片描述
    在这里插入图片描述
    eg:
    在这里插入图片描述
    在这里插入图片描述

2.6 字符流

2.6.1 文件字符流——FileReader和FileWriter

在这里插入图片描述

  • 练习
/**
 * FileReader和 FileWriter
 * @author Dell
 */
public class Demo3 {
	//练习:复制fw.txt内容到fw1.txt文件中
	public static void test3() throws IOException {
		//读
		File file = new File("fw.txt");
		if (!file.exists()) {
			file.createNewFile();
		}		
		FileReader fr = new FileReader(file);
		char[] buf = new char[(int) file.length()];
		fr.read(buf);	
		
		//写
		FileWriter fw = new FileWriter("fw1.txt");
		fw.write(buf);
		fw.close();
		fr.close();
	}
	public static void main(String[] args) throws IOException {
		test3();
	}
}

2.7 缓冲流——BufferedReader 和 BufferedWriter

  • BufferedReader:
    • readLine() 返回一行,如果返回值为null,说明文件内容读取完毕
  • BufferedWriter:换行时只能在字符串后面跟\n

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.8 打印流——PrintWriter

println() 换行
在这里插入图片描述
在这里插入图片描述

2.9 转换流——InputStreamReader和 OutputStreamWriter

字节流 -> 字符流
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.10 RandomAccessFile类:输入流和输出流是一个流对象

对象声明:RandomAccessFile raf = newRandomAccessFile(File file, String mode);
其中参数 mode 的值可选 “r”:可读,“w” :可写,“rw”:可读性;

  • r :输入流
  • rw :既可以作为输入流,也可以作为输出流
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值