文本数据IO操作

Reader和Writer

字符流原理

  • Reader是字符输入流的父类
  • Writer是字符输出流的父类
  • 字符流是以字符(char)为单位读写数据的,一次处理一个unicode
  • 字符流的底层仍然是基本的字节流
  • 字符流封装了字节的编码解码算法
常用方法
  • Reader的常用方法
    ---- int read():读取一个字符,返回的int值"低16"位有效
    ---- int read(char[] chs):从该流中读取一个字符数组的length个字符并存入该数组,返回值为实际读到的字符量
  • Writer的常用方法
    — void write(int c):写出一个字符,写出给定int值"低16"位表示的字符
    — void write(char[ ] chs):将给定字符组中所有字符写出
    — void write(String str):将给定的字符串写出
    — void write(char[ ] chs,int offset,int len):将给定的字符数组中从offset处开始连续的len个字符写出

转化流

字符转换流原理

  • InputStreamReader:字符输入流
    — 使用该流可以设置字符集,并按照指定的字符集从流中按照编码将字节数据转换为字符并读取.
  • OutputStreamWriter:字符输出流
    — 使用该流可以设置字符集,并按照指定的字符集将字符转换为对应字节后通过该流写出

指定字符编码

  • InputSteramReader的构造方法允许我们设置字符集:
    — InputStreamReader(InputStream in,String charsetName)
    基于给定的字节输入流以及字符编码创建ISR
    — InputStreamReader(InputStream in)
    —该构造方法会根据系统默认字符集创建ISR
  • OutputStreamWriter:的构造方法:
    ---- OutputStreamWriter(OutputStream out,String charsetName)
    基于给定的字节输出流以及字符编码创建OSW
    — OutputStreamWriter(OutputStream out)
    该构造方法会根据系统默认字符集创建OSW
案例:按指定编码将文本写入文件
public void testOSW()throws Exception{
	FileOutputStream fos=new FileOutputStream("osw.txt");
	//根据指定编码写出字符串,编码名称虎落大小写
	OutputStreamWriter osw=new OutputStreamWriter(fos,"GBK");
	osw.write("Mr张");
	osw.close();
}
案例:读出特定编码文本文件
public void testISR()throws Exception{
	FileInputStream fis=new FileInputStream("osw.txt");
	//根据指定编码读取字符串,编码名称忽略大小写
	inputStreamReader isr=new inputStreamReader(fis,"GBK");
	int chs=-1;
	while((输出=isr.read())!=-1){
			System.out.println((char)chs);
	}
	isr.close();
}

PrintWriter

创建PW对象

  • PrintWriter是具有自动行刷新的缓冲字符输出流,其提供了比较丰富的构造方法
    — PrintWriter(File file)
    — PrintWriter(String fileName)
    — PrintWriter(OutputStream out)
    — PrintWriter(OutputStream out,boolean autoFlush)
    — PrintWriter(Writer writer)
    — PrintWriter(Writer writer ,boolean autoFlush)
  • 其中参数为OutputStream与Writer的构造方法提供了一个可以传入boolean值参数,该参数用于表示PrintWriter是否具有自动行刷新

print与println方法

  • PrintWriter提供了丰富的重载print与printtln方法,其中println方法在于输出目标后自动输出一个系统支持的换行符.若该流是具有自动行数新的,那么每当通过println方法写出的内容都会被实际写出,而不是进行缓存
  • 常用方法:
    — void print(int i):打印整数
    — void print(char c):打印字符
    — void print(boolean b):打J印boolean值
    — void print(char[ c):打印字符数组
    — void print(double d):打印double值
    — void print(float f):f J印float值
    — void print(long ):打印long值
    — void print(String str):打印字符串

BufferedReader

构建BufferedReader

  • BufferedReader是缓冲字符输入流,其内部提供了缓冲区,可以,可以提高读取效率
  • BBufferedReader的常用构造方法
    — BufferedReader(Reader reader)

创建BufferedReader对象

public void testBufferedReader() throws IOException{
	FileInputStream fis=new FileInputStream(" demo.txt" );
	InputStreamReader isr=new InputStreamReader(fis); //这里可以指定编码
	BufferedReader br= new BufferedReader(isr);
}

使用BR读取字符串

  • BufferedReader提供了一个可以便于读取一行字符串的方法:
    — String readLine()
    该方法连续读取一行字符串,直到读取到换行符为止,返回的字符串中不包含该换行符
案例:读取一个文本文件的所有行输出到控制台
public void testBufferedReader()throws Excrption{
	FileInputStream fis=new FileInputStream("pw.txt");
	InputStreamReader isr=new InputStreamReader(fis)
	BufferedReader br=new BufferedReader(isr);
	String line=null;
	while((line=br.readLine())!=null){
		System.out.println(line);
	}
	br.close();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值