在java中会涉及到对文件进行读取和写入操作,以下将介绍如何用java对文件进行读取和写入
读取
通过Readr读取字符流文件中的数据
读取字符流文件中的数据表示以字符为单位进行读取
package 文件操作;
import java.io.*;
/**
* Created with IntelliJ IDEA.
* Description:
* User: wuyulin
* Date: 2023-08-06
* Time: 15:36
*/
//用Readr读取字符流文件中的数据
public class Demo1 {
public static void main(String[] args) throws IOException {
//由于Reader类是虚拟类所以我们不能直接实例化Reader类的对象,只能实例化继承于Reader类的子类
//由于实例化FileReader类型的对象后就会自动打开对应的文件
//而考虑到很可能会由于忘记调用close方法导致使用完文件后没有关闭文件导致严重后果
//所以采用try(){}的结构,在()中实例化FileReader类型的对象,在执行完{}中的内容后便会自动关闭打开的文件
//读取字符流文件中数据的多种方式
try(Reader reader=new FileReader("./text.txt")){
//一
//Read是读取字符流的数据,调用read()可以读取一个字符的数据,读取失败返回-1
//int n1=reader.read();
//二
//char[] chs=new char[1024];
//读取到的字符放到chs数组中,要是文件有>=1024个字符则读取满数组,要是文件有<1024个字符则将文件的所有字符读到数组中
//返回的值n2表示实际读取到数组的字符个数
//int n2=reader.read(chs);
//三
//表示读取数据到数组cbuf中,读取的数据填充到数组的off下标,填充len个字符
//reader.read(char[] cbuf,int off,int len)
//一般要读取并打印完文件中的内容采用的方法
while (true){
char[] chs=new char[5];
int n=reader.read(chs);
//文件中的数据已经读取完毕
if(n==-1){
break;
}
//将当前读取到的字符进行打印
for(int i=0;i<n;i++){
System.out.print(chs[i]);
}
}
}
}
}
通过inputStream读取字节流文件中的数据
读取字节流文件中的数据表示以字节为单位进行读取
//用字节流读取文件中的数据
//InputStream和Readr的使用方式大致相同
public class Demo2 {
public static void main(String[] args) throws IOException {
try(InputStream inputStream=new FileInputStream("./text.txt")){
//一
//调用不带参数的read方法只读取一个字节,当返回-1表示文件中没有数据了
//inputStream.read();
//二
//read方法的参数输入一个byte类型的数组,表示从文件中读到的字节数据都放到bytes数组中
//返回一个int类型的值表示实际读到数组bytes中的字节数据个数
// byte[] bytes=new byte[4];
// int n=inputStream.read(bytes);
//三
//read方法填入三个参数依次表示,1.将从文件中读到的字节数据放入bytes数组中,从bytes数组下标0开始放数据,一共要放4个数据
// byte[] bytes=new byte[4];
// inputStream.read(bytes,0,4);
//遍历并输出文件中所有数据的普遍方法
while (true){
byte[] bytes=new byte[4];
int n=inputStream.read(bytes);
//读到了文件末尾
if(n==-1){
break;
}
//没有读完文件中的数据
//打印数组中读到的数据
for(int i=0;i<n;i++){
System.out.printf("%x",bytes[i]);
}
}
}
}
}
写入
通过writer字符输出流向文件中输出数据
通过OutputStream字节输出流向文件中输出数据
略。因为和上面writer的用法完全相同
read和write方法的参数