您的位置:程序门 -> java -> j2se / 基础类



紧急求救!!怎样从一个文本文件里提取


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


紧急求救!!怎样从一个文本文件里提取
发表于:2007-01-15 08:08:22 楼主
写一个函数要求提取里面的制定章输出到一个文件里,我写了一下这个函数

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 ");
        }
}
发表于:2007-01-15 08:20:561楼 得分:0
上面的代码运行以后就卡住了,我看是第二个while有问题,但不知道怎么改,有没有高手给指点一下啊,很急用的,在线等!!!
发表于:2007-01-15 09:01:442楼 得分:0
while(!rs.equals( "\n\n "))
这个好像有问题吧。你用readline()读取,已经是相当于读一个“\n”了,不可能有再读到“\n\n”。
发表于:2007-01-15 09:15:453楼 得分:0
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();
        }
发表于:2007-01-15 09:24:294楼 得分:0
运行以后抛出   异常了     nullpoiterexception   ,   看来还是我里面有问题
发表于:2007-01-15 09:25:325楼 得分:0
是第38行
发表于:2007-01-15 09:27:366楼 得分:0
又试了一下,还是一个死循环啊,唉。。。。
发表于:2007-01-15 09:27:467楼 得分:0
如二楼所说你得while(!rs.equals( "\n\n "))这句有问题,将导致文件写入失败,此时你仍可以用
while((rs   =   buf.readline())!=null)来做循环判断
发表于:2007-01-15 09:30:358楼 得分:0
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();
        }
发表于:2007-01-15 09:44:209楼 得分:0
这样的话酒吧全文都给拷贝了,应该在哪里加如那个   rs.equals( "\n\n ")呢?


快速检索

最新资讯
热门点击