Java I/O读写文件

前言:在计算机中,通常使用各种各样的文件保存数据,如何在Java程序中操作这些文件呢?java.io包提供了一些接口和类,可以对文件进行基本的操作。File类可以操作文件的属性,I/O流可以读写文件(包括文本文件、二进制文件、对象)

一、File类操作文件和目录

使用步骤:
1、引入File类:import java.io.File;
2、构建一个文件对象:File f=new File(“test.txt");
3、利用File方法访问文件或目录属性:
f.exists() //判断文件或目录是否存在
f.isFile() //判断是否是文件
f.mkdir() //创建一个目录,它的路径名由当前file对象指定
f.mkdirs() //创建包括父目录的目录
在这里插入图片描述

二、认识Java的流

上面说到File类能对文件或目录的属性进行操作,但是File类不能访问文件的内容,读文件是指把文件中的数据读取到内存中,写文件是把内存中的数据写到文件中,那么通过什么读写文件呢?答案是流。流是指一串流动的字符,是以先进先出的方式发送和接收的通道。流分为输入流和输出流,输入和输出是相对内存说的。
Java的输出流主要由OutputStream和Writer作为基类,输入流主要由InputStream和Reader作为基类。
流的分类在这里插入图片描述

三、读写文本文件

一、使用字节流读写文本文件

1、使用FileInputStream读文本文件

1、int read():一个字节一个字节读。返回的是该字节的整数表示形式,如果读到了输入流的末流,返回-1;
2、int read(byte[] b):从输入流读取若干字节,把这些字节保存到数组b中,返回的是读取的字节数,如果读到了输入流的末流,返回-1;
3、int read(byte[] b,int off ,int len):从输入流读取若干字节,把这些字节保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数目。返回的是实际读取的字节数,如果读到了输入流的末流,返回-1。
4、void close();
5、int available():可以从输入流中读取的字节数目。

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

FileInputStream读文件的流程:
1、FileInputStream对象和String结果对象声明
2、创建FileInputStream对象(文件路径或File对象)
3、读单字节或整个读到byte数组中
4、转成字符串
5、关闭FileInputStream流
6、返回结果

2、使用FileOutputStream写文本文件

在这里插入图片描述

FileOutputStream写文件的流程:
1、File对象装载文件路径
2、判断文件父级目录是否存在,不存在则创建
3、声明FileOutputStream对象
4、创建FileOutputStream对象
5、把要写的字符串转成byte数组,并写入输入流
6、关闭FileOutputStream流

二、使用字符流读写文本文件

1、使用BufferedReader和FileReader读文本文件

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

2、使用BufferedWriter和FileWriter读文本文件

在这里插入图片描述

四、读写二进制文件

利用DataIntputStream类读二进制文件,其实与利用FileInputStream类读文件极其相似,也要用到FileInputStream类关联二进制文件,写同理。
在这里插入图片描述

五、序列化保存对象信息、反序列化获取对象信息

相关类要实现Serializable接口!!!
在这里插入图片描述
在这里插入图片描述

写对象
1、要求对象的类型必须是可序列化类型(实现了Serializable接口)
2、现有写入的目标流
3、创建对象流,把输出流装入
4、调用对象流的writeObject()把对象装入
5、关闭资源
读对象:
1、现有输入的源文件流
2、创建对象输入流,装入文件输入流
3、调用对象流的readObject()读取到对象
4、关闭资源

拓展:中文乱码问题如何解决?
方式一:手动设置。手动更改文件格式或者程序环境编码格式。(不建议用,弊端多)。
方式二:通过流读取时设置编码格式。使用Reader子类InputStreamReader。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值