写一个函数要求提取里面的制定章输出到一个文件里,我写了一下这个函数import java.io.*;
import java.io.FileReader;
import java.io.PushbackReader;
import java.io.IOException;
import java.lang.*;
import java.io.*;
import java.util.*;class chapitre{public static String skipblanks(String s){ //此函数为了跳过空格

String aux = "";
for(int i = 0 ; i<s.length();i++){
    if(s.charAt(i)!=' '){
aux = aux + s.charAt(i);
    }
}
return aux;
    }public static void chapter(String name, String type ){  //    
    String s = "";
    String aux ;
    String nom = name+"1"; //输出一个新文件名为 name1
    try{
FileReader rf = new FileReader(name);
BufferedReader buf = new BufferedReader(rf);
FileWriter wf = new FileWriter(nom);
BufferedWriter buff = new BufferedWriter(wf);
String rs ;
while((rs = buf.readLine())!=null){
    aux = skipblanks(rs);
    System.out.println(aux);
             if(aux.equals(type)){            //如果等于用户输入的章节,开始向新文件写内容直到遇到两个换行
while(!rs.equals("\n\n")){
                      buff.write(rs);
                      buff.newLine();
    }
}
         buf.close();
buff.close();
    }
    catch(IOException e){
System.out.println(e);
    }
 }public static void main(String argv[]){
chapitre("test","CHAPTER1");
    }
}

解决方案 »

  1.   

    上面的代码运行以后就卡住了,我看是第二个while有问题,但不知道怎么改,有没有高手给指点一下啊,很急用的,在线等!!!
      

  2.   

    while(!rs.equals("\n\n"))
    这个好像有问题吧。你用readLine()读取,已经是相当于读一个“\n”了,不可能有再读到“\n\n”。
      

  3.   

    while后少一个大括号,提前关闭了流
    正确如下:
     try{
    FileReader rf = new FileReader(name);
    BufferedReader buf = new BufferedReader(rf);
    FileWriter wf = new FileWriter(nom);
    BufferedWriter buff = new BufferedWriter(wf);
    String rs ;
    while((rs = buf.readLine())!=null){
        aux = skipblanks(rs);
        System.out.println(aux);
                 if(aux.equals(type)){            //如果等于用户输入的章节,开始向新文件写内容直到遇到两个换行
    while(!rs.equals("\n\n")){
                          buff.write(rs);
                          buff.newLine();
        }
    }}
             buf.close();
    buff.close();
        }
      

  4.   

    运行以后抛出 异常了  NullpoiterException , 看来还是我里面有问题
      

  5.   

    如二楼所说你得while(!rs.equals("\n\n"))这句有问题,将导致文件写入失败,此时你仍可以用
    while((rs = buf.readLine())!=null)来做循环判断
      

  6.   

    try{
    FileReader rf = new FileReader(name);
    BufferedReader buf = new BufferedReader(rf);
    FileWriter wf = new FileWriter(nom);
    BufferedWriter buff = new BufferedWriter(wf);
    String rs ;
    while((rs = buf.readLine())!=null){
        aux = skipblanks(rs);
        System.out.println(aux);
                 if(aux.equals(type)){            //如果等于用户输入的章节,开始向新文件写内容直到遇到两个换行
    while((rs = buf.readLine())!=null){
                          buff.write(rs);
                          buff.newLine();
        }
    }}
             buf.close();
    buff.close();
        }
      

  7.   

    这样的话酒吧全文都给拷贝了,应该在哪里加如那个 rs.equals("\n\n")呢?