java io流 Read疑惑

Dawangmiao 2010-03-11 10:54:25
public class TestReader {

static File file = new File(fileName);//一个普通的.txt文本文件,里面有英文有中文。
static Reader reader = null;

public static void readFileByChars(String fileName) {
try {
reader = new FileReader(file);
char tempchars[] = new char[30];//1--这个地方有点不太明白,这个char数组的长度“30”是老师写的,为啥腻?难道是随便设定一个>0长度?
int charread = 0;
while ((charread = reader.read(tempchars)) != -1) {2--这个地方也不明白,调用了read方法,是把读到的一个字符放到tempchars数组里吗?然后再接着读第二个?还是别的解释一下?
System.out.print(tempchars);
}

reader.close();

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {

TestReader.readFileByChars(fileName);

}
}
...全文
155 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
梦_枫 2010-03-12
  • 打赏
  • 举报
回复
第一个问题:30是指定一次读取文件字符的一个长度的缓存,只要比0大就OK。。。
第二个问题:就是根据指定的长度(30)一次最多读文件字符个数为30,如果文件最后一次没有读到30个字符也没事,
如果读不到一个字符就返回-1
zhouyong80 2010-03-12
  • 打赏
  • 举报
回复
对于第一个问题,其实tempchars[]的用处就是一个缓存,是将文件的数据读到这个缓存里。
第二个问题,并非是一次读取一个字符,而是一次读取tempchars.length个字符,当读到文件末尾的时候会返回-1。如果你将while循环中print改成println也许就能看到效果了。
qingyuan18 2010-03-11
  • 打赏
  • 举报
回复
《Think in Java》 里面有JDK io的模式解释
poFate 2010-03-11
  • 打赏
  • 举报
回复
对于第一个问题。你可以自己试试改成300,就可以知道,用30没有啥原因
对于第二个问题
是把第一个长度为30的字符串独到tempchars中去,如果读到字符不到30也不会出问题
接下来在读第二个长度为30 的数组。。。。
以此类推,直到文件末尾

62,614

社区成员

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

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