A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我为你着迷 金牌黑马   /  2014-12-22 13:49  /  784 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 我为你着迷 于 2014-12-22 13:51 编辑
  1. import java.io.*;
  2. class EncodeStream
  3. {
  4.                 public static void main(String[] args) throws IOException
  5.                 {
  6.                       //writeText();
  7.                       readText();
  8.                                 
  9.                 }
  10.                
  11.                public static void readText() throws IOException
  12.                 {
  13.                         InputStreamReader isr=new InputStreamReader(new FileInputStream("utf.txt"),"utf-8");
  14.                         
  15.                         char[] buf=new char[10];
  16.                         int len=isr.read(buf);
  17.                         
  18.                         String str=new String(buf,0,len);
  19.                         System.out.println(str);
  20.                         
  21.                         isr.close();
  22.                 }
  23.                
  24.                 public static void writeText() throws IOException
  25.                 {
  26.                         OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("utf.txt"),"utf-8");        
  27.                         
  28.                         osw.write("你好");
  29.                         
  30.                         osw.close();
  31.                 }
  32. }        
复制代码
大家好 我想问下这句话char[] buf=new char[10]; 为什么用的是字符数组呢 而不是字节数组呢?byte[] buf=new byte[10];
这不是在操作字节读取流对象呢?  哪位帮小弟解答下 好吗  黑马币无限给你!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

4 个回复

倒序浏览
已经用InputStreamReader将字节流转换为字符流了,并且指定了编码表,所以可以定义char[]缓冲区,以字符形式读取。

评分

参与人数 1黑马币 +10 收起 理由
我为你着迷 + 10 很给力!

查看全部评分

回复 使用道具 举报
读取的是文本文件啊

评分

参与人数 1黑马币 +10 收起 理由
我为你着迷 + 10 赞一个!

查看全部评分

回复 使用道具 举报
1.不知道你注意到这行代码没,int len=isr.read(buf); 这句话的含义是把从文件中读取出来的内容放到一个字符数组中,参数是char[]   而不是byte[]。这是最为主要的原因。后面的方法需要char【】 所以就得给传char[]
2.我之前也没考虑过这个问题,也是现找的答案。还有一点就是,byte[]是字节数组,每个字节存储数据的大小是非常小的-128至127。而从文件中读取出来的数据,有数字、字符、特殊符号等,其大小可能超出byte的存储范围。
3.最重要的是,第二条是我自己这么理解的,第一条应该是最为准确的。
4.你是怎么理解的?

评分

参与人数 1黑马币 +10 收起 理由
我为你着迷 + 10 很给力!

查看全部评分

回复 使用道具 举报
duluhua 发表于 2014-12-22 14:20
1.不知道你注意到这行代码没,int len=isr.read(buf); 这句话的含义是把从文件中读取出来的内容放到一个字 ...

我!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马