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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沙漠里的小鱼 黑马帝   /  2012-2-16 19:44  /  2372 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

FileReader in =new FileReader(f) ;         
char [] buf =new char[];
int len =in.read(buf);
System.out.println(new String(buf,o,len));为什么在一个文件中读取内容存到一个数组要in.read(buf)这样写 就是说读一个文件里的内容存到数组里面要写成文件名.read(数组名)吗  我不是很明白 谁讲讲啊 最好new String(buf,o,len)也不大理解 为什么要这样写 呢 我查看了API文档 好像没这样写法的

评分

参与人数 1技术分 +1 收起 理由
admin + 1 不懂就问!

查看全部评分

2 个回复

倒序浏览
本帖最后由 刘基军 于 2012-2-16 20:30 编辑

参考API:
1.继承于Reader 的read方法:read
public int read(char[] cbuf)
         throws IOException将字符读入数组。在某个输入可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。

参数:
cbuf - 目标缓冲区
返回:
读取的字符数,如果已到达流的末尾,则返回 -1

2.String 的构造函数有这样的:---这样写的目的:根据实际读取的字符数len的大小来进行处理
String
public String(char[] value,
              int offset,
              int count)分配一个新的 String,它包含取自字符数组参数一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被复制;后续对字符数组的修改不会影响新创建的字符串。

参数:
value - 作为字符源的数组。
offset - 初始偏移量。
count - 长度。

3.char [] c = new char[];应该写成:char [] c = new char[1024];//需写明大小

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
1.为什么在一个文件中读取内容存到一个数组要in.read(buf)这样写 就是说读一个文件里的内容存到数组里面要写成文件名.read(数组名)吗

你理解错了  char [] buf =new char[];  你定义的这个char数组没有写大小。
比如你写成char [] buf =new char[1024];   int len =in.read(buf);这个意思就是说把从输入流的数据字符读入数组buf里边,最多读入1024个,返回的就是len也就是读取的个数。
new String(buf,o,len)   这是个构造方法。意思就是利用buf数组截取一个子数组创建一个新的字符串。从char数组buf里边从0角标位开始,len就是截取子数组的长度。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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