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();
}
}
}