黑马程序员技术交流社区

标题: 文本文件读取方式--read(char[] ) [打印本页]

作者: 赵志勇    时间: 2012-5-8 17:52
标题: 文本文件读取方式--read(char[] )
刚才看视频文本文件读取方式二是有个小疑问:
import java.io.*;
class  FileReaderDemo2
{
public static void main(String[] args) throws IOException
{
  FileReader fr=new FileReader("demo.txt");
   char[] buf=new char [3];
   int num=fr.read(buf);
   System.out.println("num="+num+"....."+new String (buf));
   fr.close();
}
}
int num=fr.read(buf);这语句有点想不通,fr.read() 返回值类型是int .可是上边的代码运行结果是num=3。我知道这条语句记住就可以了,可是我想弄清楚,fr.read()是累加的吗?为什么?如果不是请高人指点。谢谢。


作者: 谭景宾    时间: 2012-5-8 17:58
fr.read()返回的是读取到的个数,算是累加吧。
从数组的下标0开始读,读到多少个元素返回多少个
作者: 任睦强    时间: 2012-5-8 18:13
fr.read()返回的是你要读取文件里面数据的长度,如果里面文件没有你定义数组的长度大的话,则返回空,否则截取数组长度的内容
作者: 赵志勇    时间: 2012-5-8 18:20
谭景宾 发表于 2012-5-8 17:58
fr.read()返回的是读取到的个数,算是累加吧。
从数组的下标0开始读,读到多少个元素返回多少个 ...

fr.read()不是把读取的字符放入数组中吗?是不是fr.read()有两个功能,一个是计数,一个是读,而这两种功能是同时进行的。是吗?
作者: 赵志勇    时间: 2012-5-8 18:22
任睦强 发表于 2012-5-8 18:13
fr.read()返回的是你要读取文件里面数据的长度,如果里面文件没有你定义数组的长度大的话,则返回空,否 ...

谢谢,明白了,言简意赅。
作者: 赵志勇    时间: 2012-5-8 18:32
任睦强 发表于 2012-5-8 18:13
fr.read()返回的是你要读取文件里面数据的长度,如果里面文件没有你定义数组的长度大的话,则返回空,否 ...

刚实验了一下,如果里面文件没有你定义数组的长度大的话,则返回空。返回的不是空。还是数组的长度。
作者: 谭景宾    时间: 2012-5-8 18:50
赵志勇 发表于 2012-5-8 18:20
fr.read()不是把读取的字符放入数组中吗?是不是fr.read()有两个功能,一个是计数,一个是读,而这两种功 ...

fr.read(buf);
加了数组参数就是把字符放入数组中,同时返回的也是数组的长度
作者: 廖理    时间: 2012-5-8 18:51
字符流的read(char[])方法的读取原理是这样的
如果数组的长度小于文件中类容的长度,则将文件中从开始到数组长度的字符存入数组,并返回从文件中读取的字符个数,也就是数组的长度。
如果数组的长度大于文件中类容的长度,则将文件中的所有数据按顺序存入数组,并返回实际读取的字符数,也就是文件中的字符个数。
如果数组的长度等于文件中类容的长度,则刚好将文件中的字符读取存入数组,返回实际读取的长度,也就是数组的长度或文件中字符的个数;
总而言之就是返回实际当中存入数组中的字符数。
字节流中的read(byte[])是一样的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2