转换流:
当读取和写入时程序环境和目标文件的编码字符集不一致,一般会出现乱码,可以通过转换流来实现如果是往目标文件写入数据时,把字符流转换成字节流写入到目标文件当中,可以指定编码字符集
- 意义:
一般情况下,开发工具当中的编码字符集一般设置的都是UTF-8如果在读取源文件时,源文件的编码字符集是GBK,,那么我们在读取的时候也要使用GBK编码字符集进行解码
如果在进行写文件的时候,如果目标文件使用GBK编码字符表进行编码,那么我们也要使用GBK编码字符集进行写入 - 备注:
不管使用字节流还是字符流,最终存储到文件当中的都是以字节的方式存入的 - 字符集:
ASCII字符集--->ASCII编码表
GBK字符集--->GBK编码表
Unicode字符集--->UTF-8编码表、UTF-16编码表、UTF-32编码表...
//把字符流转换为字节流
public static void m1()throws Exception{
//创建一个字节输出流
String pathname="day21\\src\\abc.txt";
FileOutputStream fos = new FileOutputStream(pathname);
String str="河南郑州";
byte[] bytes = str.getBytes("UTF-8");
fos.write(bytes);
//创建一个转换流
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fos, "GBK");
outputStreamWriter.write("智游教育");
//使用InputStreamReader 来读取源文件的数据
FileInputStream fis = new FileInputStream(pathname);
InputStreamReader inputStreamReader = new InputStreamReader(fis,"GBK");
char[] chars=new char[10];
inputStreamReader.read(chars);
System.out.println(chars);
outputStreamWriter.flush();
}