public class StreamTest01 {
public static void main(String[] args) {
FileReader fileReader = null;
try {
//实例化File对象,指明要操作的文件
File file = new File("hello.txt");
//获取文件绝对路径
System.out.println(file.getAbsoluteFile());//untitled2\hello.txt
//提供具体的流 FileInputStream 输入流
fileReader = new FileReader(file);
//第一种读取操作,无参read(),是下面代码的简化写法
//read()方法:从输入流中读取数据的下一个字节,返回 0 到 255 范围内的 int 字节值,如果因为已经到达流末尾而没有可用的字节,则返回值 -1。
// int data;//定义变量接收char
// while ((data = fileReader.read()) != -1){
// System.out.print((char) data);
// }
// int data = fileInputStream.read();
// while (data != -1){
// System.out.print((char)data);//输出时需要用字符呈现
// data = fileInputStream.read();//这里相当于.next,继续读取下一个字符
// }
//第二种读取操作,调带参的read()
char[] cbuf = new char[5];//创建数组
int len;
//read返回每一次读取字符的个数,每次最多只能读 5 个,如果返回-1说明读取完了
while((len = fileReader.read(cbuf)) != -1){
//每一轮循环,都执行 fileReader.read(cbuf) 把字符存入数组,每一轮存入的字符覆盖上一轮存入的字符
for (int i = 0; i < len; i++) {//变量当前数组存入字符的数量
System.out.print(cbuf[i]);//存入几个就遍历几个
}
//或者
//System.out.print(new String(cbuf,0,len));
}
} catch (IOException ioException) {
ioException.printStackTrace();
} finally {
//关闭流
try {
if (fileReader != null) fileReader.close();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
}
06-13
11-03
7869