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

字符流和字节流的read方法

字符有问题,换成字母我也不明白。

程序用到的info.txt中是“abc”,程序如下:
Reader p1=new FileReader("info.txt");
  int p11=p1.read();
  System.out.println(Integer.toString(p11, 16));
  p1.close();
   
  InputStream fm=new FileInputStream("info.txt");
  int fm1 = fm.read();
  int fm2 = fm.read();//读取一个字节
  System.out.println(Integer.toString(fm1, 16));
  System.out.println(Integer.toString(fm2, 16));
  fm.close();
复制代码
字符流读出的是61
字节流读出的是61 61

问题是字符流不应该是读一个字符吗?两个字节,第1个字节是61,第2个字节是62,那么字符流应该读出的是61+62*0x100=0x6261.

------解决方案--------------------
字符流读出的是61
字节流读出的是61 62
感觉读出什么跟文件的编码方式有关。
------解决方案--------------------
字符流和字节流读取多少和读取位置,和你设置的缓存区还有当前文件的position位置
------解决方案--------------------
应该是编码问题。。
------解决方案--------------------
System.out.println((char) p11);
是ASCII码

------解决方案--------------------
探讨
System.out.println((char) p11);
是ASCII码