Java通过阅读器书写器实现按编码读写字符

点此查看全部文字教程、视频教程、源代码

本文目录

1. 简介

通过按字节的方式读写文件,实际上是比较底层的,并不算方便。实际程序员可能更喜欢指定编码(如UTF-8),并按字符读写。

Java提供了封装好的阅读器、书写器替我们完成了流-字符转换,我们直接可以操作读写字符的函数即可。

2. 示例

工具类

//工具类
package com.maoge.stream;
import java.io.File;
public class StreamUtils {
	//用于定义每次读取的长度
	public static final int BUFFER_LENGTH=512;
	//文件对象
	public static File FILE_FOR_READ;
	public static File FILE_FOR_WRITE;
	static{
		FILE_FOR_READ=new File("C:\\test.txt"); 
		FILE_FOR_WRITE=new File("C:\\result.txt"); 
	}
}

阅读器、书写器

package com.maoge.stream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
//阅读器、书写器示例
public class ReaderWriterDemo {
	//测试入口
	public static void main(String[] args){
		//书写器OutputStreamWriter示例
		writeText("哈利路亚");
		//阅读器InputStreamReader示例
		readText();
		//可以在InputStreamReader上再串联一个BufferedReader,实现按行读取,这个就非常方便了。
		System.out.println("开始按行读取"); 
		readLine();
	}
	public static void writeText(String text){
		OutputStreamWriter out=null;
		try {
			//OutputStreamWriter是按字符(非字节了)方式写入,同时可以指定编码
			out=new OutputStreamWriter(new FileOutputStream(StreamUtils.FILE_FOR_WRITE),"UTF-8");
			out.write(text);
			out.flush();
		} catch (Exception e) {
			System.out.println(e.toString());
		}finally{
			try {
				out.close();
			} catch (IOException e) {
				System.out.println(e.toString());
			}
		}
	}
	public static void readText(){
		InputStreamReader in=null;
		try{
			//注意阅读器一次读取一个字符
			in=new InputStreamReader(new FileInputStream(StreamUtils.FILE_FOR_READ),"UTF-8");
			StringBuilder sb=new StringBuilder();
			int readInt;
			while((readInt=in.read())!=-1)
				sb.append((char)readInt);
			System.out.println(sb.toString());
		}catch(Exception e){
			System.out.println(e.toString());
		}finally{
			try {
				in.close();
			} catch (IOException e) {
				System.out.println(e.toString());
			}
		}
	}
	public static void readLine(){
		BufferedReader br=null;
		try{
			br=new BufferedReader(new InputStreamReader(new FileInputStream(StreamUtils.FILE_FOR_READ),"UTF-8"));
			String line = null;
			while((line = br.readLine())!=null)
			{
				System.out.println(line); 
			}
		}catch(Exception e){
			System.out.println(e.toString());
		}finally{
			try {
				br.close();
			} catch (IOException e) {
				System.out.println(e.toString());
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员大阳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值