Java 高级知识 -- IO部分

----------------------------- 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参数,可以用以下代码:

 

Java代码   收藏代码
  1. public static void main(final String[] args)  
  2.  {  
  3.   final String encoding = System.getProperty("file.encoding");  
  4.   System.out.println(encoding);  
  5.  }  

 

 结果与操作系统(我用MS Windows)的区域语言有关系,如下表

标准和格式 JVM默认字符集
中文(中国) GBK
中文(新加坡) GBK
中文(香港特别行政区) MS950
中文(澳门特别行政区) MS950
中文(台湾) MS950

 

你可能感兴趣的:(java,jvm)