package 第十四章.IO;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;public class C {
    public static void main(String[] args) {
        try {
             File file1=new File("E:"+File.separator+"a.txt");
             File file2=new File("E:"+File.separator+"b.txt");
             File file3=new File("E:"+File.separator+"c.txt");
             BufferedReader br=new BufferedReader(new InputStreamReader(new 
                     FileInputStream("E:"+File.separator+"第一回  宴桃园豪杰三结义 斩黄巾英雄首立功.txt")));
            BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file1)));
            BufferedWriter bw1=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2)));
            BufferedWriter bw2=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file3,true),"GBK"));
             String s="";
             while((s=br.readLine())!=null&&!s.equals(" 榜文行到涿县,引出涿县中一个英雄。"
                     + "那人不甚好读书;性宽和,寡言语,喜怒"))
             {
                  bw.write(s);
                  bw.newLine();
                  bw2.write(s);
                  bw2.newLine();
                  System.out.println(s);              }
             for(String s1=s;s1!=null;s1=br.readLine())
             {                  bw1.write(s);
                  bw1.newLine();
                  bw2.write(s);
                  bw2.newLine();
                  System.out.println(s1);             }
            br.close();
            bw.close();
           bw1.close();
           bw2.close();        } catch (Exception e) {
          e.getMessage();
        }    }
}
题目要求是把"第一回  宴桃园豪杰三结义 斩黄巾英雄首立功.txt"该文件中的内容分成两部分显示在a.txt和b.txt上和把全部内容显示在c.txt上最后在屏幕中输出
其中“榜文行到涿县,引出涿县中一个英雄。"
                     + "那人不甚好读书;性宽和,寡言语,喜怒"))是我在小说中的一句话作为判断条件的
但效果并不是我想的那样
求高手指点一下

解决方案 »

  1.   

    显然不行s=br.readLine())是读取一行。。
      

  2.   

    可以在文件中加入一个标示符D,当读到字符D时,就将前面的类容保存到a.txt中后面的保存到b.txt中。
      

  3.   

    不对啊还是总是把内容全复制到a.txt中啦
    而b.txt则什么也没有
      

  4.   

    public static void main(String[] args) {
    try {
    File file1 = new File("C:/testJar/a.txt");
    File file2 = new File("C:/testJar/b.txt");
    File file3 = new File("C:/testJar/c.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(
    new FileInputStream("C:/testJar/CharSetTest.java")));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(file1), "UTF-8"));
    BufferedWriter bw1 = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(file2), "UTF-8"));
    BufferedWriter bw2 = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(file3, true), "UTF-8"));
    String s = br.readLine();
    while (s  != null
    && !s.trim().equals("public class CharSetTest {")) {
    bw.write(s);
    bw.newLine();
    bw1.write(s);
    bw1.newLine();
    System.out.println("前段:"+s);
    s = br.readLine();
    }
    bw1.close();
    for (String s1 = s; s1 != null; s1 = br.readLine()) {
    bw.write(s1);
    bw.newLine();
    bw2.write(s1)
    ;
    bw2.newLine();
    System.out.println("后段:"+s1);
    }
    br.close();
    bw.close();
    bw2.close(); } catch (Exception e) {
    e.getMessage();
    } }这样试试,自己对照去看看吧,后面for循环肯定是要写入s1了,前面读出来可能会有很多空格,这样可能就一直是循环的while循环,而程序都没有到for循环的。所以价格trim()
      

  5.   

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;public class C {
    public static void main(String[] args) {
    try {
    File file1 = new File("d:" + File.separator + "a.txt");
    File file2 = new File("d:" + File.separator + "b.txt");
    File file3 = new File("d:" + File.separator + "c.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(
    new FileInputStream("d:" + File.separator
    + "第一回 宴桃园豪杰三结义 斩黄巾英雄首立功.txt")));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(file1)));
    BufferedWriter bw1 = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(file2)));
    BufferedWriter bw2 = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(file3, true), "GBK"));
    String s = "";
    while ((s = br.readLine()) != null
    && !s.equals("那人不甚好读书;性宽和,寡言语,喜怒")) {//应该是包含其他的字符,比如换行等等,建议不要用equal
    bw.write(s);
    bw.newLine();
    bw2.write(s);
    bw2.newLine();
    //System.out.println(s); }
    for (String s1 = s; s1 != null; s1 = br.readLine()) { bw1.write(s1);
    bw1.newLine();
    bw2.write(s1);
    bw2.newLine();
    System.out.println(s1); }
    br.close();
    bw.close();
    bw1.close();
    bw2.close(); } catch (Exception e) {
    e.getMessage();
    } }
    }
      

  6.   

    //lz,给你的程序稍稍做了修改,呵呵package 第十四章.IO;import java.io.*;public class C {
      public static void main(String[] args) throws Exception{    File file1=new File("E:"+File.separator+"a.txt");
      File file2=new File("E:"+File.separator+"b.txt");
      File file3=new File("E:"+File.separator+"c.txt");
      BufferedReader br=new BufferedReader(new FileReader(("E:"+File.separator+"第一回 宴桃园豪杰三结义 斩黄巾英雄首立功.txt")));
      PrintWriter pw1 = new PrintWriter(new FileWriter(file1),true);
    PrintWriter pw2 = new PrintWriter(new FileWriter(file2),true);
    PrintWriter pw3 = new PrintWriter(new FileWriter(file3),true);  String s="";
    String str = " 榜文行到涿县,引出涿县中一个英雄。"
      + "那人不甚好读书;性宽和,寡言语,喜怒";
    boolean flag = false;//标志变量,判断是否读到指定那一行
      while((s=br.readLine())!=null)
      {
        System.out.println(s);
        pw3.println(s);
        if(s.equals(str))  flag = true;
        if(flag)
           pw2.println(s);
        else
           pw1.println(s);  }
    br.close();
    pw1.close();
    pw2.close();
    pw3.close();
        }
    }
      

  7.   

    for循环中写错了啊bw1.write(s);
    bw1.newLine();
    bw2.write(s);
    bw2.newLine();把那个s换成s1就对了,你眼睛瘸了吧