今天学Java的IO流的时候发现明明使用了字符流,中文还是出现了乱码。
代码如下:
import java.io.*;
public class ReaderAndWriter {
public static void main(String args[]) throws IOException {
File file1=new File("hello.txt");
File file2=new File("world.txt");
System.out.println(file1.getAbsolutePath());
System.out.println(file2.getAbsolutePath());
try {
FileReader fis=new FileReader(file1);
FileWriter fos=new FileWriter(file2,true);
char[] a=new char[19];
int len;
while((len=fis.read(a))!=-1) {
fos.write(a,0,len);
}
fis.close();
fos.flush();
fos.close();
}
catch(IOException e){
System.out.println(e);
}
}
}
hello.txt的内容
world.txt为空
运行代码后打开world.txt,发现中文是乱码。
网上搜了一下,发现是编码格式不同的问题。
我用的是Eclipse,我的Eclipse是UTF-8编码格式。在class源文件里Alt+Enter可以查看。
分别打开hello.txt和world.txt,将其另存为,下面有个编码格式,换成和Eclipse一样的就行了。
将world.txt中内容清除,再重新运行后,没有出现乱码。