字符流是否能自动创建文件问题

字符流是否能自动创建文件问题

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中,构造参如果是一个不存在的文件,会自动创建的。
为什么字符流中不行?

正在回答 回答被采纳积分+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

    昨天修改了下顺序确实是这样,所以一般都是先写输出流再写输入流吗?

    2021-08-23 19:04:17
  • 同学你好,不是的,具体使用哪一种流以及先写哪一种流是需要根据实际需求来决定的,例如:需要从已存在的文件中读取数据,此时就不需要书写输出流 ,只使用输入流就可以了。

    祝学习愉快~

    2021-08-24 10:44:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师