java flush的问题 10
importjava.io.*;publicclassBufferTest{publicstaticvoidmain(String[]args){//TODOAuto-g...
import java.io.*;
public class BufferTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
BufferedWriter bw = new BufferedWriter(new FileWriter("E:/programing/Java/File/src/hello3.txt"));
BufferedReader br = new BufferedReader(new FileReader("E:/programing/Java/File/src/hello3.txt"));
String s = null;
for(int i = 0; i < 10; i++){
s = String.valueOf(Math.random());
bw.write(s);
bw.newLine();
}
//bw.flush();
while((s = br.readLine()) != null){
System.out.println(s);
}
bw.close();
br.close();
} catch(IOException ex){
System.out.println("files not found");
}
}
}
这段程序如果没有bw.flush();就读不出来,但是即使没有这句程序,我看了看hello3.txt,仍然有10个数字已经写入,那为什么输出仍然没有结果? 展开
public class BufferTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
BufferedWriter bw = new BufferedWriter(new FileWriter("E:/programing/Java/File/src/hello3.txt"));
BufferedReader br = new BufferedReader(new FileReader("E:/programing/Java/File/src/hello3.txt"));
String s = null;
for(int i = 0; i < 10; i++){
s = String.valueOf(Math.random());
bw.write(s);
bw.newLine();
}
//bw.flush();
while((s = br.readLine()) != null){
System.out.println(s);
}
bw.close();
br.close();
} catch(IOException ex){
System.out.println("files not found");
}
}
}
这段程序如果没有bw.flush();就读不出来,但是即使没有这句程序,我看了看hello3.txt,仍然有10个数字已经写入,那为什么输出仍然没有结果? 展开
展开全部
“将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。”这是BufferedWriter
api的前两句话,意思是:为了防止多次操作IO(操作IO很费cpu时间),提供了一个缓冲区,当缓冲区满的时候,再写入文件,从而提高效率。因此,如果缓冲区没有写满,那么就必须强制他输出到文件,即调用flush();
你问题是:内容只是写到了缓冲区里,并没有写入文件。所以读取不到内容,程序结束后为什么文件里面又有内容呢?因为你在后面调用close()方法了,这个方法调用之前会自动调用flush()。如果你把bw.close(); 也去掉,那么文件里是没有内容的
请采纳。
api的前两句话,意思是:为了防止多次操作IO(操作IO很费cpu时间),提供了一个缓冲区,当缓冲区满的时候,再写入文件,从而提高效率。因此,如果缓冲区没有写满,那么就必须强制他输出到文件,即调用flush();
你问题是:内容只是写到了缓冲区里,并没有写入文件。所以读取不到内容,程序结束后为什么文件里面又有内容呢?因为你在后面调用close()方法了,这个方法调用之前会自动调用flush()。如果你把bw.close(); 也去掉,那么文件里是没有内容的
请采纳。
展开全部
BufferedWriter为了防止多次操作IO(操作IO很费cpu时间),提供了一个缓冲区,当缓冲区满的时候,再写入文件,从而提高效率。因此,如果缓冲区没有写满,那么就必须强制他输出到文件,即调用flush();
你要写入的内容只是写到了缓冲区里,并没有写入文件。所以读取不到内容,程序结束后为什么文件里面又有内容呢?因为你在后面调用close()方法了,这个方法调用之前会自动调用flush()。如果你把bw.close(); 也去掉,那么文件里是没有内容的
你要写入的内容只是写到了缓冲区里,并没有写入文件。所以读取不到内容,程序结束后为什么文件里面又有内容呢?因为你在后面调用close()方法了,这个方法调用之前会自动调用flush()。如果你把bw.close(); 也去掉,那么文件里是没有内容的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询