大家好,又见面了,我是你们的朋友全栈君。
-
BufferedWriter
BufferedWriter 起始跟 FileWriter 的使用没什么区别,属于字符输出流。
BufferedWriter 更高效,因为它内置有一个长度为 8192 的字符数组,也就是 8K 的字符数组。这样子,如果我们往文件里面写内容的话,如果内容没有填满这个数组,就会自动等待直到我们填满,然后一起写入硬盘。硬盘的运行速度是很慢的。但是我们也可以利用 close() 方法,虽然它可能没有满,但是还是可以强制让它写入硬盘。
就像黑车司机一样,他拉客,通常总不会拉一个客人就走,一般都是整辆车都坐满了人,才会开车,但有时候实在招不到人了,总不能不走吧。也还是会启动的。
除此之外,BufferedWriter 还提供了自动换行的方法 —— newLine() 方法,它会根据操作系统的不一样,自动增添换行符。在实际开发中,如果要换行,就尽量使用 newLine() 方法。
BufferedWriter 的使用需要借助 FileWriter 来使用:
public class TestBufferedWriter {
public static void main(String[] args) throws IOException{
FileWriter fw = new FileWriter("file01.txt");
BufferedWriter bw = new BufferedWriter(fw);
int size = 0;
while(true) {
bw.write("你是我的眼");
bw.newLine();
size++;
if(size==8193)
break;
System.out.println("XXX");
}
System.out.println("YYY");
bw.close();
}
}
结果是在一个名为 “file01” 的 txt 文件写入了 8193 行的 “你是我的眼”。
-
BufferedReader
BufferedReader 起始跟 FileReader 的使用没什么区别,属于字符输入流。
BufferedReader 更高效,因为它内置有一个长度为 8192 的字符数组,也就是 8K 的字符数组。这样子,如果我们从文件里面读内容的话,如果内容没有填满这个数组,就会自动等待直到我们填满,然后一起从硬盘读到内存。硬盘的运行速度是很慢的。但是我们也可以利用 close() 方法,虽然它可能没有满,但是还是可以强制让它读入内存。
就像供应商运货物到超市,为了省钱,一般不会只装一两个,而是装满了整辆车才上送往超市是吧。但是有时候特殊情况,装不下了,只能再跑一趟了。当我们读的时候,是一个一个的拿出来读的。
除此之外,BufferedReader 还提供了读取一整行的方法 —— readLine() 方法。
BufferedReader 的使用需要借助 FileReader 来使用:
注:一共有三种方法来进行读取
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("file01.txt");
BufferedReader br = new BufferedReader(fr);
/*
int ch;
while((ch=br.read())!=-1) {
System.out.print((char)ch);
if((char)ch == '\n')
System.out.println();
}
*/
String str;
while((str=br.readLine())!=null)
System.out.println(str);
/*char[] a = new char[8193];
int len;
while((len=br.read(a))!=-1) {
String str = new String(a,0,len);
System.out.println(str);
}
System.out.print("********");
*/
br.close();
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133643.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...