在做文件读写的过程中遇到以下问题:
源文件格式为.txt,IO流读取操作完成后,读取到的前后字节数不同,
并且有乱码问题
打开文件后,发现拷贝后的文件中存在乱码,开始觉得可能仅仅只是txt文件编码的原因,于是将文件扩展名全都改为.doc文件,再次进行IO流读写操作
字节数还是和之前一样,在doc中也存在乱码
于是,我怀疑是我读取流的方式的原因,上面的代码我用的是字符流方式读
于是我换了读取方式,改用字节流:
查看文件的大小,没有之前么悬殊,但是字节流读取效率太低
文件中还存在乱码问题于是查找资料,得知是编码问题:
FileReader类读取文件时,调用的字节编码是java默认的utf-8,但是一般windows的txt默认是ANSII编码,所以需要转换字符编码,FileReade构造函数和方法成员都没有设置编码方法而InputStreamReader这个类有,因此套用它可实现转换字符编码目的
Bufferez
BufferedReader br= new BufferedReader(new InputStreamReader(new FileInputStream(filename),"GBK"));
注意:在读写时编码格式必须一致
今天的疑惑解除了~~~