题目是这样的:写一个简单程序,读取一个文件,每次读取一行,生成另一个文件.我是这样写的:
package han;import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;public class Test8 {
public static void main(String[] args)throws Exception {
FileOutputStream out=new FileOutputStream("E:\\1.txt");
PrintWriter writer=new PrintWriter(out);
writer.println("床前明月光");
writer.println("疑是地上霜");
writer.println("举头望明月");
writer.println("低头思故乡");
FileInputStream in=new FileInputStream("E:\\1.txt");
InputStreamReader reader=new InputStreamReader(in);
BufferedReader buffered=new BufferedReader(reader);
String br=buffered.readLine();
while(br!=null){
FileOutputStream out1=new FileOutputStream("E:\\2.txt");
PrintWriter writer1=new PrintWriter(out);
writer1.println(br);
br=buffered.readLine();
}


}}
运行了一下,发现生成1.txt,但里面没内容。2.txt没生成!我不知道错在哪?请高手指导一下!谢谢!

解决方案 »

  1.   

    下面这个可以满足楼主的要求package beans.dg.test;import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;public class Testa { public static void main(String[] args) throws Exception {
    FileOutputStream out = new FileOutputStream("E:\\1.txt");
    PrintWriter writer = new PrintWriter(out);
    writer.println("床前明月光");
    writer.println("疑是地上霜");
    writer.println("举头望明月");
    writer.println("低头思故乡");

    writer.flush();
    FileInputStream in = new FileInputStream("E:\\1.txt");
    InputStreamReader reader = new InputStreamReader(in);
    BufferedReader buffered = new BufferedReader(reader);
    String br = null;
    int i = 1;
    while ((br = buffered.readLine()) != null) {
    i++;
    FileOutputStream out1 = new FileOutputStream("E:\\" + i + ".txt");
    PrintWriter writer1 = new PrintWriter(out1);   //这里lz写成了out writer1.println(br);
    writer1.flush();    //这里需要flush一下
    } }}
      

  2.   

    答:在writer.println("低头思故乡"); 之后加上:
    writer.flush();
    writer.close();将:FileOutputStream out1=new FileOutputStream("E:\\2.txt"); 
    PrintWriter writer1=new PrintWriter(out1  );
    移到:while(br!=null){ 之前,循环的外面.最后再加上
    writer1.flush();
    writer1.close();
      

  3.   

    因为没有关闭流(下面那些close方法) public static void main(String[] args) throws Exception {
    FileOutputStream out = new FileOutputStream("E:\\1.txt");
    PrintWriter writer = new PrintWriter(out);
    writer.println("床前明月光");
    writer.println("疑是地上霜");
    writer.println("举头望明月");
    writer.println("低头思故乡");
    writer.close();
    out.close();

    FileInputStream in = new FileInputStream("E:\\1.txt");
    InputStreamReader reader = new InputStreamReader(in);
    BufferedReader buffered = new BufferedReader(reader);
    String br = null;
    FileOutputStream out1 = new FileOutputStream("E:\\2.txt");
    PrintWriter writer1 = new PrintWriter(out1);
    while ((br = buffered.readLine()) != null) {
    writer1.println(br);
    }
    writer1.close();
    out1.close();
    buffered.close();
    reader.close();
    in.close();
    }
      

  4.   

    最重要的是
    writer1.flush(); 
    writer1.close(); 
    必须关闭流