麻烦老师帮看下代码,报错了,找不到原因

麻烦老师帮看下代码,报错了,找不到原因


import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;


public class HelloTest1 {

public void transWriteByBuf() {

try {

FileOutputStream fos = new FileOutputStream("Test2.txt");

OutputStreamWriter osw = new OutputStreamWriter(fos);

BufferedWriter bw = new BufferedWriter(osw);


bw.write("你好吗?");

bw.write("\n");

bw.write("我很好!");


fos.close();

osw.close();

bw.close();


} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}


public void transReadByBuf() {

try {

FileInputStream fis = new FileInputStream("Test2.txt");

InputStreamReader isr = new InputStreamReader(fis);

BufferedReader br = new BufferedReader(isr);


String str;

while ((str = br.readLine()) != null) {

System.out.println(str);

}


fis.close();

isr.close();

br.close();


} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


}


public static void main(String[] args) {

HelloTest1 ht1 = new HelloTest1();

ht1.transWriteByBuf();

ht1.transReadByBuf();

}


}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

报错信息为流的close异常,关于流的关闭操作应该是先创建的后close。所以建议文件的读写操作写在一个方法中,然后按照流的关闭操作进行close。另外在将字符串写入文件后,调用bw.flush()清空缓存区,这样可以将文件中的内容重新读取到缓存区并在控制台输出。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • leoleo524 提问者 #1
    如果要求读和写的操作写在不同的方法中呢,流的关闭该怎么写?有点懵
    2018-10-11 11:44:06
  • 好帮手慕阿满 回复 提问者 leoleo524 #2
    如果要求读和写的操作写在不同的方法中,那就将方法写在不同的类中,这样在各自的类中按照流的关闭顺序进行close。祝:学习愉快!
    2018-10-11 14:19:27
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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