在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方法的参数