在Java中,以下三个类经常用于处理数据流,下面介绍一下三个类的不同之处以及各自的用法。
- InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流;
- InputStreamReader : 是字节流与字符流之间的桥梁,能将字节流输出为字符流,并且能为字节流指定字符集,可输出一个个的字符;
- BufferedReader : 提供通用的缓冲方式文本读取,readLine读取一个文本行, 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
举例:
//将字节流转化为字符流
InputStreamReader reader = new InputStreamReader(new FileInputStream(targetFile));
//提供通用的缓冲方式文本读取
BufferedReader br = new BufferedReader(reader);
迭代器(Iterator)
-
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
-
(2) 使用next()获得序列中的下一个元素。
-
(3) 使用hasNext()检查序列中是否还有元素。
-
(4) 使用remove()将迭代器新返回的元素删除。
举例:
迭代器用于while循环
Iterator iter = l.iterator();
while(iter.hasNext()){
String str = (String) iter.next();
System.out.println(str);
}
File类中的list和listFiles方法
- list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组
- listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组
list的add()和addAll()的方法
- result.addAll(list); // 把list中的每一个元素加到result中,result.size() == list.size()
- result.add(list); // 将list作为一个元素加到result中,则result.size()为1