字符流写入和读取

字符流写入和读取

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();
		}

	}

}

麻烦老师看下改进方向,还有readLine和newLine方法根本没讲啊,看文档也没怎么看懂,还是看了同学的作业才知道这两个方法的使用,详细解答下这两个方法把

正在回答 回答被采纳积分+1

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

1回答
好帮手慕小小 2021-08-23 13:35:41

同学你好,readLine()方法是读取一行文本,newLine()方法是写入一个行分隔符,相当于换行\n。

若在写入时不加bw.newLine();,则写入的文本将在一行显示。效果如下所示:

http://img1.sycdn.imooc.com//climg/6123319f097edd7802110049.jpg

另外同学代码整体完成的很好,运行结果与效果图相符,但代码实现中有一点不太符合题目要求,题目要求应用转换流向文件写入文本,而代码中未使用转换流,建议使用文件字节输入/输出流,参考代码如下:

http://img1.sycdn.imooc.com//climg/6123331d09a0f4f907020149.jpg

http://img1.sycdn.imooc.com//climg/6123332d094ecad506670078.jpg

//输出流参考代码
FileOutputStream fos = new FileOutputStream("hello.txt"); 
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);
//输入流参考代码
FileInputStream fis = new FileInputStream("hello.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

祝学习愉快~

  • 提问者 做条咸鱼才最好 #1
    //			while((n=br.read(c))!=-1) {
    // System.out.print(new String(c));
    // }
    while((s=br.readLine())!=null) {
    System.out.println(s);
    }
    这两种是不是实现都一样?用哪种好?


    2021-08-23 19:03:06
  • 同学你好,两个方法读取的方式是不一样的,read(char[] c)是将字符读入数组中;readLine()是读取一行文本。此代码中使用哪一个方法进行读取都可以。

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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