30.字符流,操作字符更方便

Reader

在这里插入图片描述

  • BufferedReader缓冲区字符输入流
    • LineNumberReader提供了行号的具体的装饰器类
  • CharArrayReader字符数组输入流
  • StringReader字符串输入流(本质是字符串)
  • InputStreamReader是字节转换为字符的桥梁,用于转换,它使指定的charset读取字节并将其解码为字符
    • FileReaderFileReader流是用于读取字符文件的便捷类。(FileReader类从InputStreamReader类继承而来)
  • PipedReader管道输入流
  • FilterReader是个用于过滤读取字符流的抽象类
    • PushbackReader一个允许字符被推回到流中的字符流读取器

Writer

在这里插入图片描述

  • BufferedWriter缓冲区字符输出流
  • CharArrayWriter字符数组输出流
  • StringWriter字符串输出流
  • OutputStreamWriter是字节转换为字符的桥梁,用于转换,它使指定的charset读取字节并将其解码为字符
    • FileWriter
  • PipedWriter管道输出流
  • FilterWriter过滤流

InputStreamReader

构造方法

  • InputStreamReader(InputStream in)

创建一个使用默认字符集的InputStreamReader。

  • InputStreamReader(InputStream in, Charset cs)

创建一个使用给定字符集的InputStreamReader。

  • InputStreamReader(InputStream in, CharsetDecoder dec)

创建一个使用给定字符集解码器的InputStreamReader。

  • InputStreamReader(InputStream in, String charsetName)

创建一个使用命名字符集的InputStreamReader。

常用方法

  • close()

关闭流并释放与之相关联的任何系统资源。

  • getEncoding()

返回此流使用的字符编码的名称。

  • read()

读一个字符

  • read(char[] cbuf, int offset, int length)

将字符读入数组的一部分。

  • ready()

告诉这个流是否准备好被读取。

OutputStreamWriter

构造方法

  • OutputStreamWriter(OutputStream out)

创建一个使用默认字符编码的OutputStreamWriter。

  • OutputStreamWriter(OutputStream out, Charset cs)

创建一个使用给定字符集的OutputStreamWriter。

  • OutputStreamWriter(OutputStream out, CharsetEncoder enc)

创建一个使用给定字符集编码器的OutputStreamWriter。

  • OutputStreamWriter(OutputStream out, String charsetName)

创建一个使用命名字符集的OutputStreamWriter。

常用方法

  • getEncoding()

返回此流使用的字符编码的名称。

  • write(int c)

写一个字符

  • write(String str, int off, int len)

写一个字符串的一部分。

  • write(char[] cbuf, int off, int len)

写入字符数组的一部分。

  • flush()

刷新流。

  • close()

关闭流,先刷新。

示例:

	public static void main(String[] args) {
		try {
			FileInputStream fis = new FileInputStream("jachie.txt");
			InputStreamReader isr = new InputStreamReader(fis);
			FileOutputStream fos = new FileOutputStream("jachie1.txt"); 
			OutputStreamWriter osw = new OutputStreamWriter(fos);
			int n = 0;
			char[] cbuf = new char[20];
				// 读数据到字符数组里
				while((n = isr.read(cbuf)) != -1) {
					// 	转字符串输出
					String s = new String(cbuf, 0, n);
					System.out.print(s);
					// 写入
					osw.write(cbuf, 0, n);
					// 刷新流
					osw.flush();
				}
				fis.close();
				isr.close();
				fos.close();
				osw.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

BufferedReader

构造方法

  • BufferedReader(Reader in)

创建使用默认大小的输入缓冲区的缓冲字符输入流。

  • BufferedReader(Reader in, int sz)

创建使用指定大小的输入缓冲区的缓冲字符输入流。

常用方法

  • close()

关闭流并释放与之相关联的任何系统资源。

  • read()

读一个字符

  • read(char[] cbuf, int off, int len)

将字符读入数组的一部分。

  • readLine()

读一行文字。\r或者\n则为一行

  • ready()

告诉这个流是否准备好被读取。

BufferedReader

构造方法

  • BufferedWriter(Writer out)

创建使用默认大小的输出缓冲区的缓冲字符输出流。

  • BufferedWriter(Writer out, int sz)

创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。

常用方法

  • close()

关闭流,先刷新。

  • flush()

刷新流。

  • newLine()

写一行行分隔符。

  • write(char[] cbuf, int off, int len)

写入字符数组的一部分。

  • write(int c)

写一个字符

  • write(String s, int off, int len)

写一个字符串的一部分。

示例:

	public static void main(String[] args) {

		try {
			FileInputStream fis = new FileInputStream("jachie.txt");
			InputStreamReader isr = new InputStreamReader(fis);
			FileOutputStream fos = new FileOutputStream("jachie1.txt"); 
			OutputStreamWriter osw = new OutputStreamWriter(fos);
			BufferedReader br = new BufferedReader(isr);
			BufferedWriter bw = new BufferedWriter(osw);
			int n = 0;
			char[] cbuf = new char[20];
			while((n = br.read(cbuf)) != -1) {
				bw.write(cbuf, 0, n);
				bw.flush();
			}
			fis.close();
			isr.close();
			fos.close();
			osw.close();
			br.close();
			bw.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

空 白

停止的只会是自己,你得追逐世界

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

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

打赏作者

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

抵扣说明:

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

余额充值