最近写东西频繁用到JAVA的文件操作,比较喜欢的用法还是FileReader和BufferedReader结合的,以前对JAVA文件操作理解的不深。这次出了很多BUG才知道JAVA文件操作的一些关卡所在。
1.虽然JAVA中没有提供指针,但JAVA底层一些机制的实现还是通过指针实现的。在打开文件时,文件指针指向文件首部,每次读取文件时,都是通过上一次文件指针的位置继续读下去,这个要切记,不是说上次读完文件后,下一次读文件还是从文件首部开始读,而是根据上一次的位置继续读文件。
<span style="white-space:pre"> </span>buffer = br.readLine();
System.out.println(buffer);
buffer = br.readLine();
System.out.println(buffer);这样打印出来的结果是不一样的,分别是文件的第一行(如果是第一次打开文件)和第二行。
2.有些情况下我们可能不需要读取文件中的所有行,这时对于这种逐行读取的操作命令应该怎么办?
有两种办法,第一种是还是逐行读,但是不逐行处理
while((buffer = br.readLine())!=null){
if(i%3==0){
System.out.println(buffer);
}
i++;
}这样就能得到每3行的文件。
第二种方法就比较简单粗暴了。直接关闭文件,然后再打开
<span style="white-space:pre"> </span>buffer = br.readLine();
System.out.println(buffer);
br.close();
fr.close();
fr = new FileReader("matrix.txt");
br = new BufferedReader(fr);
buffer = br.readLine();
System.out.println(buffer);这样就让文件指针又重新回到文件首部,然后进行一些空循环,控制读到我们想要的若干行。
3.文件关闭操作
文件关闭听上去很简单,可是也要处理得当,我上次做这个关闭的时候,就是只关闭了br文件指针,但没有关闭fr,导致程序报错说内存泄露之类的,所以我们关闭文件时,要记住将所有与它相关的文件指针都关掉才行。
本文记录了在Java中进行文件读取操作的经验,强调了文件指针的工作原理,指出在不需读取全部内容时如何处理,以及正确关闭文件的重要性。文件指针在每次读取后会从上次位置继续,若只需部分读取,可以不处理或重新打开文件。文件关闭时务必关闭所有相关文件指针,以避免内存泄露问题。

4094

被折叠的 条评论
为什么被折叠?



