字符流是否能自动创建文件问题
package com.zzh.homework;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CharHomework {
public static void transWriteByBuf(BufferedWriter bw) {
try {
bw.write("你好吗?");
bw.newLine();
bw.write("我很好!");
bw.flush();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public static void transReadByBuf(BufferedReader br) {
String s=null;
// int n=0;
// char[] c=new char[1024];
try {
// while((n=br.read(c))!=-1) {
// System.out.print(new String(c));
// }
while((s=br.readLine())!=null) {
System.out.println(s);
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public static void main(String[] args) {
FileReader fr;
BufferedReader br;
FileWriter fw;
BufferedWriter bw;
try {
fr=new FileReader("hello.txt");
br=new BufferedReader(fr);
fw=new FileWriter("hello.txt");
bw=new BufferedWriter(fw);
transWriteByBuf(bw);
transReadByBuf(br);
fr.close();
br.close();
fw.close();
bw.close();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
这里会有问题:
假如hello.txt不存在,会报错。
本地如果有hello.txt,则不会报错。
而字节流中FileInputStream和FileOutputStream中,构造参如果是一个不存在的文件,会自动创建的。
为什么字符流中不行?
13
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小小
2021-08-23 14:38:01
同学你好,FileWriter、FileOutputStream输出流在创建时若文件不存在,则均会进行创建不会报错;但在使用FileInputStream、FileReader输入流进行读取时,若文件不存在则会出现“java.io.FileNotFoundException”异常。同学代码中是先进行读取再进行写入,在读取时hello.txt还未被创建,故会出现异常报错信息,建议同学先进行写入再进行读取操作。
另外关于代码的修改建议可查看:https://class.imooc.com/course/qadetail/301095。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星