IO流的补充: 字符流FileReader 和FileWriter BufferedReader和BufferedWriter的用法

上次只写了字节流的操作,现在吧字符流的也补上

同样FileReader和BuuferedReader是读取文件到内存,是属于输入流

FileWriter和BufferedWriter是从内存输出到文件中,属于输出流(都是以内存为参照)


看下FileWriter和FileReader的用法

import java.io.*;;

/**演示文件字符流
 * 
 * @author Wang Yanming
 *
 */
public class Demo1 {

	
	public static void main(String[] args) {
		//文件取出字符流对象(输入流)
		FileReader fr = null;
		//写入到文件(输出流)
		FileWriter fw = null;
		
		try {
			//创建一个file对象
			fr = new FileReader("c:\\test.txt");
			fw = new FileWriter("d:\\vvv.txt");
			//读入到内存
			char []c= new char[1024];
			int n = 0;//记录实际读取的字符数
			while((n=fr.read(c))!=-1)
			{
//				System.out.println(c);
				/*这样又可以打印出来,但是有的情况下会乱码,
				 * 因为c的大小事1024,如果不到1024就打印,会把后面的也打印出来*/
				String s = new String(c,0,n);//采用这种形式
				System.out.print(s);//这里不要写换行println
//				fw.write(c);
				/*当然这样写会把不到1024的那部分数据也写进去 会导致在记事本中乱码,所以建议按下面写*/
				fw.write(c, 0, n);
				
				
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		finally
		{
			try 
			{
				fr.close();//如果不关闭会导致文件写不进去
				fw.close();
				
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
		
	}

}

看下BufferedReader和BufferedWriter的用法

import java.io.*;

/**演示缓冲字符流案例
 * BufferedReader 和BufferdWriter
 * @author Wang Yanming
 *
 */
public class Demo1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BufferedReader br = null;
		BufferedWriter bw = null;
 		
		
		try {
//			br = new BufferedReader("c:\\test.txt");
			//直接诶按照上面写会出错,因为BufferdReader只认识Reader,
			//而FileReader又是reader的子类先创建一个FileReader对象,
			FileReader fr = new FileReader("c:\\test.txt");//问题:读取d:\\ss.txt,不能输出可以写
			FileWriter fw = new FileWriter("d:\\好似.txt");
			br = new BufferedReader(fr);
			bw = new BufferedWriter(fw);
			
			String s="";
			while((s=br.readLine())!=null)
			{
				System.out.println(s);
				//这里要写println 因为是按照行读取,不会读换行符,可因参照API,
				//所以如果不写ln的话就不会换行
				 
				/**以下是输出到磁盘**/
				s = s+"\r\n";//因为本身是换行的 ,所以要加上"\r\n"
				bw.write(s);
		
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		finally
		{
			try {
				br.close();
				bw.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}

	}

}




  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmineWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值