字节流和字符流的问题

rocking 2005-11-15 05:20:36
FileInputStream fi = new FileInputStream("c:/cmd.txt");
while((temp=fi.read())!=-1)
System.out.print((char)temp);

InputStreamReader ir = new InputStreamReader((new FileInputStream("c:/cmd.txt")));
int temp;
System.out.print(ir.getEncoding());
while((temp=ir.read())!=-1)
System.out.print((char)temp);

cmd.txt里面是英文文本

既然有字节流和字符流的区别
字节流是以一个字节为单位,而字符流是2个字节为单位的
为什么这两段程序的read输出都一样?
下面的不是要每次读出2个字节的内容吗?
...全文
170 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gemouzhi 2005-11-15
  • 打赏
  • 举报
回复
因为你所写的字符的编码就只占一个字节。

字符流也是需要解码的,如你的第一个字节本身小于128解出来的当然就是这个字节码
洪泉 2005-11-15
  • 打赏
  • 举报
回复
楼上说的极是
congliu 2005-11-15
  • 打赏
  • 举报
回复
逐byte或逐word读英文是一样的,读中文才有差别
老無所依 2005-11-15
  • 打赏
  • 举报
回复
字节转成字符不是你想的那样的,应该都是统一先转化成二进制,然后由数据类型所占的二进制位来移动或增加位数来改变数据类型的,大概就这样

pauliuyou 2005-11-15
  • 打赏
  • 举报
回复
进行了优化
rocking 2005-11-15
  • 打赏
  • 举报
回复
OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("c:/out.txt"));
ow.write(97);
ow.write(97);
ow.write(97);
ow.close();
这一段代码写入3个字节到out.txt里面去
为什么不是6个字节?
pauliuyou 2005-11-15
  • 打赏
  • 举报
回复
呵呵,下面的两字节应该是没错,可是它内部进行了编码. 你试试文本中有中文的情况,
下面的优势就体现了.

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧