紧急求救!!怎样从一个文本文件里提取
写一个函数要求提取里面的制定章输出到一个文件里,我写了一下这个函数
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 ");
}
}
------解决方案--------------------while(!rs.equals( "\n\n "))
这个好像有问题吧。你用readLine()读取,已经是相当于读一个“\n”了,不可能有再读到“\n\n”。
------解决方案--------------------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();