这些天正好学到文件这,想读取本地文件,闲的没事,里面的txt文件写的是《归去来兮辞》:
public class ReadWriteTextFile {
public static void main(String[] args){
File file = new File("F:/poem.txt");
if(file.exists()){
System.out.println("exist");
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine())!= null){
System.out.println(line);
}
br.close();
isr.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
谁知道一读取就变成:
因为之前变成写的输出到控制台的程序输出都是正常的,所以很纳闷,不知道编码出现什么问题,改了挺长时间也没搞明白,File Encoding之类的我都改成UTF-8了也没用。
后来想是不是txt本身编码的问题,所以,我把读取文件格式改成了“GBK”,没想到就对了~
public class ReadWriteTextFile {
public static void main(String[] args){
File file = new File("F:/poem.txt");
if(file.exists()){
System.out.println("exist");
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis,"GBK");
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine())!= null){
System.out.println(line);
}
br.close();
isr.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
程序执行如下: