场景
从文件中读取数据
public static void main(String[] args) {
System.out.println("hello, world s ".toCharArray());
// 打印结果: "hello, world s ";
try {
/**
* 读到缓存
*/
char[] buffer = new char[1000];
Reader reader = new FileReader("/Users/qiqi/test.txt");
while (reader.read(buffer) != -1) {
System.out.println(buffer);
}
System.out.println("===================================");
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("/Users/qiqi/test.txt")));
/**
* 案例一:此时 在 while 中读去一次 此时读到了 HEllo, 但是没有打印,在下一行又读到了第二行,此时打印了,然后又在 while 中
* 读到了第三行,没有打印,之后在下一行去读第四行,但是没有任何内容,所以为空
*
* 案例二:解决办法,每次读取成功后放到string 中
*/
// 案例一
while (br.readLine() != null) {
System.out.println(br.readLine());
}
// 案例二
String s = null;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
System.out.println("================================");
// 或者 一行一行地读
System.out.println(br.readLine());
System.out.println(br.readLine());
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
结果
hello, world s
HEllo
success
nihao
===================================
success
null
================================
null
null
null
要注意的点
共用一个读指针
看代码:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("/Users/qiqi/test.txt")));
BufferedReader br2 = br;
...
System.out.println("============== 案例一: ==================");
// 案例一
while (br.readLine() != null) {
System.out.println(br.readLine());
}
System.out.println("============== 案例二: ==================");
/**
* 此时 br2 定义如下:
* BufferedReader br2 = br; br he br2 通用一个读指针, 由于br已经读取完毕,所以br2 读到的结果为空
*/
// 案例二:
String s = null;
while ((s = br2.readLine()) != null) {
System.out.println(s);
}
结果如下:
当 br2 赋值为:
BufferedReader br2 = new BufferedReader(new InputStreamReader(new FileInputStream("/Users/qiqi/test.txt")));
结果如下: