----------------------------- IO部分 文本文件编码------------------------------
读取文本文件内容,并正确指定编码
public static void main(String[] args) throws Exception { String path="d:\\计算.txt"; File file=new File(path); FileInputStream in=new FileInputStream(file); //文本文件编码是UTF-8,如果是其它,请修改下面 InputStreamReader read = new InputStreamReader(in, "UTF-8"); BufferedReader ra = new BufferedReader(read); String s=ra.readLine(); while(s!=null){ System.out.println(s); s=ra.readLine(); } }
写入文本文件,并正确指定编码
final File file = new File("d:\\a.txt"); if (!file.exists()) { new File(file.getParent()).mkdirs(); file.createNewFile(); //文件不存在,建立 } final Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); out.write("大量文字内容,比如HTML代码"); out.flush(); out.close();
问:用JAVA字符流向硬盘写一个a.txt文件时,默认情况下a.txt会使用什么字符集编码?
答:"字符流"默认用JVM中所设置的字符集编码, JVM是从系统变量file.encoding中读取操作系统的默认编码的字符集,来设置JVM的字符集编码的。
要查看系统的file.encoding参数,可以用以下代码:
结果与操作系统(我用MS Windows)的区域语言有关系,如下表
标准和格式 JVM默认字符集
中文(中国) | GBK |
中文(新加坡) | GBK |
中文(香港特别行政区) | MS950 |
中文(澳门特别行政区) | MS950 |
中文(台湾) | MS950 |