转换流
-
转换流提供了在字节流和字符流之间的转换
-
Java API 提供了两个转换流:
InputStreamReader 和 OutputStreamWriter
-
字节流中的数据都是字符时,转换字符流操作更高效
InputStreamReader
-
用于将字节流读取到的字节按指定字符集解码成字符。需要和 InputStream “套接”
-
当字节流中的数据都是字符的时候,使用转换流转换为字符流处理效率更高
-
在转换字符流时,设置的字符集编码要与读取的文件的数据编码一致,不然会出现乱码
字节输入流 --> 字符输入流
public class InputStreamReaderDemo {
public static void main(String[] args) {
InputStreamReaderDemo.testInputStreamReader();
}
/**
* 转换输入流
* InputStreamReader
* 在转换字符流时,设置的字符集编码要与读取的文件的数据编码一致,不然会出现乱码
*/
public static void testInputStreamReader() {
try {
// 创建文件字节流对象
FileInputStream fi = new FileInputStream("D:\\JAVA\\Java 基础入门\\IO 流\\test\\t4.txt");
// 把字节流转换为字符流,第一个参数为字节流,第二个参数为编码
InputStreamReader ir = new InputStreamReader(fi,"UTF-8");
char[] ch = new char[50];
int len = 0;
while ((len = ir.read(ch)) != -1) {
System.out.println(new String(ch,0,len));
}
ir.close();
fi.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
字节输出流 --> 字符输出流
public class OutputStreamWriterDemo {
public static void main(String[] args) {
OutputStreamWriterDemo.testOutputStreamWriter();
}
/**
* 转换字节输出流为字符输出流
*/
public static void testOutputStreamWriter() {
try {
FileOutputStream fo = new FileOutputStream("D:\\JAVA\\Java 基础入门\\IO 流\\test\\t4out.txt");
OutputStreamWriter ow = new OutputStreamWriter(fo,"utf-8");
ow.write("哈咯,我的!");
ow.flush();
ow.close();
fo.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}