BufferedWriter不写入文件

我必须从用户获取用户的名称和地址,并将其放入textfile。 我写下面的代码:

package selfTest.nameAndAddress; import com.intellij.codeInsight.template.postfix.templates.SoutPostfixTemplate; import java.io.*; import java.util.Arrays; /** * Created by */ public class Test { public static void main(String[] args) throws IOException { InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); //creating addressbook text file File fl=new File("E:/addressbook.txt"); fl.createNewFile(); FileReader fr=new FileReader(fl); BufferedReader in=new BufferedReader(fr); boolean eof=false; int inChar=0; String[] name=new String[2]; String[] address=new String[2]; int counter=0; do{ FileWriter fw=new FileWriter(fl); BufferedWriter out=new BufferedWriter(fw); System.out.println("Enter "+(counter+1)+" students name "+" and address"); name[counter]=br.readLine(); address[counter]=br.readLine(); out.write(name[counter]); System.out.println("Nmae: "+name[counter]+" ddress: "+address[counter]); counter++; }while(counter<2); } } 

当我运行代码时,它接受来自用户的输入,但文本文件为空。 地址和名称不会写入文本文件。 如何在上面的代码中将名称和地址存储到文本文件中。

您创建BufferedWriter ,但从不flushclose它。

这些操作实际上是写入文件的


正如@ManoDestra在评论中指出的那样,Java支持try-with-resources语句 ,它允许您格式化语句,如:

 try(BufferedWriter out = new BufferedWriter(new FileWriter(fl))) { 

由于BufferedWriter实现了AutoCloseable接口,因此当try块退出时,Java将自动清除out

BufferedWriter的一个更简单的替代方法是PrintStream:

 PrintStream printer = new PrintStream(new File("filepath")); System.setOut(printer); 

然后你可以打印任何你想要的文件,例如

 printer.println(name[counter]); 

然后在最后关闭它:

 printer.close(); 

尝试使用flush()。 此方法刷新流。