第四课 处理流

1 缓冲流

  • 增强功能,提供性能
  • 字节缓冲流
    • 输入流:BufferedInputStream
    • 输出流:BufferedOutputStream
// 在节点流外层嵌套处理流
inputStream = new BufferedInputStream(new FileInputStream(inputFile));
outputStrem = new BufferedOutputStream(new FileOutputStream(outputFile));
int len = 0;
byte[] ch = new byte[100];
while ((len = inputStream.read(ch)) != -1) {
	outputStrem.write(ch, 0, len);
}
  • 字符缓冲流
    • BufferedReader,新增方法readLine()读取单行
    • BufferedWriter,新增方法newLine()相当于换行符
// 在节点流外层嵌套处理流
reader = new BufferedReader(new FileReader(srcFile));
writer = new BufferedWriter(new FileWriter(destFile));
String str = null;
while (null != (str = reader.readLine())) {
	writer.write(str);
	writer.newLine(); // 换行符
}

2 转换流(字节流转字符流:主要用来处理乱码)

  • 编码与解码的概念
    • 编码:字符 --> 编码字符集 --> 二进制
    • 解码:二进制 --> 解码字符集 --> 字符
  • 乱码
    • 编码与解码的字符集不统一
    • 字节缺少,长度缺失
  • 转换流:字节流转换为字符流
    • 输入流:InputStreamReader
    • 输出流:OutputStreamWriter
/*
 * 输入流:字节流转字符流
 */
public static void test01() {
	String filePath = "D:\\test\\readTest.txt";
	File file = new File(filePath);
	BufferedReader reader = null;
	String str = null;

	try {
		reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
		while ((str = reader.readLine()) != null) {
			System.out.println(str);
		}

	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (reader != null) {
				reader.close();
			}
		} catch (Exception e2) {
			e2.printStackTrace();
		}
	}
}

/*
 * 输出流:字节流转字符流
 */
public static void test02() {
	String filePath = "D:\\test\\writeTest.txt";
	File file = new File(filePath);
	BufferedWriter writer = null;

	try {
		writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
		String str = "哈哈哈哈哈哈哈哈哈哈哈哈哈";
		writer.write(str);
		writer.flush();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (writer != null) {
				writer.close();
			}
		} catch (Exception e2) {
			e2.printStackTrace();
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值