字节流:
创建或读取外部文件,将数据以字节流形式存储或输出,数据类型:byte。
常用的实现类:FileInputStream/FileOutputStream。
数据以字节的形式存储到文件中,也就是说存储的数据类型只能是byte类型,字符串必需转换为byte或byte数组,在存储到文件中。字节流是万能流,可以操作任意数据包括中文、西文。但在处理中文时比较麻烦。
字节流一般用在处理抽象文件上,用记事本打开,无法查看到实际内容的文件上,如图像、音视频,一些特殊的文件。
字符流:
专门用来解决字节流处理可读性文档、文件时复杂的转换、繁琐问题,如处理中文。实质是:字节流+编码的实现形式,通过转换流OutputStreamWriter/InputStreamReader将字节流可以以某种指定的字符编码形式写入。不指定字符编码时,使用默认的编码,通过系统或平台指定。即你的项目是UFT-8则默认的字符编码时UFT-8.
FileOutputWriter/FileInputWriter 直接子类:FileWriter/FileReader
如下代码运行时不会出错,但查看文件时中文会出现乱码
public static void write() throws IOException{
//指定编码方式
/BufferedWriter newW= new BufferedWriter(new OutputStreamWriter( new FileOutputStream("c.txt"),"UTF-8"));
BufferedReader newf= new BufferedReader(new InputStreamReader(new FileInputStream("编码转换.java")));
String line=null;
while( (line=newf.readLine()) !=null){
newW.write(line);
newW.newLine();
newW.flush();
}
newf.close();
newW.close();
}
原因: 写文件与读取文件的编码格式不一致.
转换流:
OutputStreamWriter/InputStreamReader