Java读文件操作可以用FileReader或BufferedReader,写文件操作用FileWriter或BufferedWriter。在实际操作中,经常使用BufferedReader和BufferedWriter来进行读写操作,所以只介绍BufferedReader和BufferedWriter的简单使用方法。
导包快捷键:Ctrl + shift + o 导包
BufferedWriter和BufferedReade使用方法
BufferedWriter提供了一种新的换行方法
public void newLine()
要追加写入:
将FileWriter fw = new FileWriter(“file03.txt”);
改为FileWriter fw = new FileWriter(“file03.txt”,true);//追加写入
publicstaticvoidmain(String[] args)throws IOException{//首先创建一个普通的FileWriter对象,如果file03.txt这个文件没有创建就会自动创建
FileWriter fw=newFileWriter("file03.txt");//将这个普通的FileWriter对象传递给BufferedWriter构造方法即可
BufferedWriter bw=newBufferedWriter(fw);//后面bw的时候和fw没有区别
bw.write("古力娜扎");
bw.newLine();//自动根据操作系统选择换行符
bw.write("马尔扎哈");//关闭流
bw.close();}
BufferedReader提供了一个额外的方法,可以读取一整行字符串:
public String readLine(): 读取一整行字符串,返回值当中不包括换行符
publicstaticvoidmain(String[] args)throws IOException{//首先创建一个普通的FileReader对象
FileReader fr=newFileReader("file03.txt");//将其包装为BufferedReader
BufferedReader br=newBufferedReader(fr);//读取单个字符int ch;//代表单个字符while((ch= br.read())!=-1){
System.out.println((char)ch);}//读取多个字符,就是从8192的缓冲区中取出多个字符//注意(换行符也算字符)char[] buf=newchar[3];//一次取出3个字符int len;//代表有效个数while((len= br.read(buf))!=-1){
String str=newString(buf,0, len);
System.out.println(str);}//String line = br.readLine();//读取一整行字符串
String line;//代表一整行字符串//按行读取整篇文章的内容while((line= br.readLine())!= null){
System.out.println(line);}
br.close();}
简单的例子
定义一个集合用于存储多个字符串 ,向其中添加一些字符串,然后将其写进文件中,要求每个字符串独占一行,再将文件中的字符串读到集合中,每一行为一个字符串元素。
步骤:
- 定义一个集合,创建一个ArrayList,用来存储多个字符串,也就是泛型是
- 向集合中添加字符串就是调用方法:add
- 写文件:FileWriter或BufferedWriter方法
- 每一个字符串要求占一行,使用newLine方法
- 关闭流
- 定义一个集合存放读取到的字符串:ArrayList
- 读文件 FileReader BufferedReader
- 读取一行:newLine
- 将读取到的字符串添到集合中:add
- 循环读取到null停止
- 关闭流
- 遍历最后得到的集合
publicstaticvoidmain(String[] args)throws IOException{
ArrayList<String> list1=newArrayList<>();//创建集合
list1.add("迪丽热巴");
list1.add("古力娜扎");
list1.add("马尔扎哈");
BufferedWriter bw=newBufferedWriter(newFileWriter("t1.txt"));//遍历集合for(int i=0; i< list1.size(); i++){
String a= list1.get(i);//获取当前字符串
bw.write(a);
bw.newLine();//换行}
bw.close();//关闭流
ArrayList<String> list2=newArrayList<>();
BufferedReader br=newBufferedReader(newFileReader("t1.txt"));
String line;//代表一整行字符串while((line= br.readLine())!= null){
list2.add(line);//将读取到的字符串添加到集合中}
br.close();for(int i=0; i< list2.size(); i++){
System.out.println(list2.get(i));}}