概述
转换流:把字节流转为字符流
转换流 = 字节流+编码表, 就是为了程序不要直接接触字节数据而且能看得懂的字符数据。
InputStreamReader: 把字节输入流转为字符输入流
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, String charsetName)
OutputStreamWriter: 把字节输出流转为字符输出流
字节流: InputStream OutputStream, 操作是字节数据
字符流: Reader 和 Writer , 操作的是字符数据, 字符流是Java层面上对字节流进行的封装。
public class Demo02 {
public static void main(String[] args) {
/*
* 构造方法
* InputStreamReader(字节流);
* InputStreamReader(字节流,编码);
* 将传入的字节输入流转为字符输入流
* */
InputStreamReader inputStreamReader = null;
try {
inputStreamReader = new InputStreamReader(new FileInputStream("C:\\Users\\GzhAnkh\\Desktop\\FileApiDemo03\\mkdij创建的目录\\FileApiDemo05.txt"));
char[] chars = new char[10];
int length;
while ((length = inputStreamReader.read(chars)) != -1) {
System.out.println(Arrays.toString(chars));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStreamReader != null)
inputStreamReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
转换输出流OutputStreamWriter
public class Demo02 {
public static void main(String[] args) {
OutputStreamWriter outputStreamWriter = null;
try {
outputStreamWriter = new OutputStreamWriter(new FileOutputStream("C:\\Users\\GzhAnkh\\Desktop\\FileApiDemo03\\mkdij创建的目录\\FileApiDemo08.java"));
char[] chars = {'1', '2', '3', '你', '我'};
outputStreamWriter.write(chars);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
outputStreamWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
if (outputStreamWriter != null)
outputStreamWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}