日期:2014-05-20  浏览次数:20707 次

字符流和字节流的read方法的另一种情况
Reader p1 = new FileReader("文档.txt");
  int p11 = 0;
  while ((p11 = p1.read()) != -1) {
   System.out.println(Integer.toString(p11, 16));
  }
  p1.close();
  
  InputStream fm = new FileInputStream("文档.txt");
  int fm1 = 0;
  while ((fm1 = fm.read()) != -1) {
   System.out.println(Integer.toString(fm1, 16));
  }
  fm.close();

文档.txt中存放的是“严”,编码是ansi。

字符流打印的是4e25,字节流打印的是d1 cf,当然都是16进制。

为什么同一文件,读出的都不一样的?

我猜是编码不同。文本存储方式是unicode,字符流打印出的是fffd 25 4e  ;字节流打印出的是ff fe 25 4e
------最佳解决方案--------------------
null
------其他解决方案--------------------
什么ansi,其实就是平台默认的GB2312。