完了,我又表达错了:
我的文件内容是这样:
大家好 大家好 大家好
-------------
大家好1 大家好1 大家好1
-------------
大家好2 大家好2 大家好2
//这里是空行
呵呵呵呵呵呵呵呵呵呵呵呵
-------------
呵呵呵呵呵呵呵呵呵呵呵呵1
------------
呵呵呵呵呵呵呵呵呵呵呵呵2
我要提取:
大家好1 大家好1 大家好1
大家好2 大家好2 大家好2
呵呵呵呵呵呵呵呵呵呵呵呵1
呵呵呵呵呵呵呵呵呵呵呵呵2
谢谢!我的初步想法是先按照 空行 分割成两块,然后按照“---------”继续分割。但是想问下大家如何按照 空行来分割文本呢?

解决方案 »

  1.   

    读到空行就算分割了嘛(line=reader.readLine())=null
      

  2.   

    先定义2个:
    StringBuffer sb1=new StringBuffer( );
    StringBuffer sb2=new StringBuffer( );

    然后再定义一个:
    BufferedReader br =new  BufferedReader(new FileReader("ddd.txt"));再然后开始读喽:
    String line =null;
    while( (line = br.readLine() ) != null ){
    if(line是空行) break;
    sb1.append(line);
    }

    再继续读:(不过在这边读之前最好先判断一下是不是因为读到文件尾了才退出的。因为前面的while循环
    也有可能是因为空行而退出的)
    if( line是空行){
    while( (line = br.readLine() ) != null ){
    sb2.append(line);
    sb1.append("\r\n");
    }
    }

    这样就用StringBuffer sb1,sb2分别提取了空行前的信息,和空行后的信息。
    之后就对sb1,sb2分别类似上面继续分割处理。如果仅仅是打印出来的话就更简单了。

    import java.io.*;
    class s{

    public static void main(String[] args) throws IOException{
    StringBuffer sb1=new StringBuffer( );
    BufferedReader br =new  BufferedReader(new FileReader("ddd.txt"));
    String line =null;
    while( (line = br.readLine() ) != null ){
    if ( (line!=null)&&line.trim().equals("") ) break;
    //第二分支的时候判断if ("-------------".equals(line))
    sb1.append(line);
    sb1.append("\r\n");
    }

    System.out.println(sb1);
    /*    打印结果如下:
    sien
    -------------
    bobo */
    //后面的sb2等代码照猫画虎你应该搞出来,我就不全敲了.
    }
    }/*ddd.txt 文件中内容如下:
    sien
    -------------
    bobo

    xixi
    -------------
    ioio
    */
      

  3.   

    String line =null;
    while( (line = br.readLine() ) != null ){
    if(line是空行) break;
    sb1.append(line);
    }再继续读:(不过在这边读之前最好先判断一下是不是因为读到文件尾了才退出的。因为前面的while循环
    也有可能是因为空行而退出的)
    if( line是空行){
    while( (line = br.readLine() ) != null ){
    sb2.append(line);
    sb1.append("\r\n");
    }
    }
      

  4.   


    不是,老大,首先非常感谢啊!
    但是小弟要的是输出
    sien
    bobo
    xixi
    ioio
    全部都输出出来。不能break掉啊~~~
      

  5.   

    我才该叫你大哥啊,上面都说了 //后面的sb2等代码照猫画虎你应该搞出来,我就不全敲了.非得给您老全部代码,授人以鱼不如授人以鱼嘛。思考致富,我吧我承认其实我一点也富,小弟都还没出师呢.,下面代码你老请受用, copy运行去吧。
    import java.io.*;
    class s{

    public static void main(String[] args) throws IOException{
    StringBuffer sb1=new StringBuffer( ),sb2=new StringBuffer();
    BufferedReader br =new  BufferedReader(new FileReader("ddd.txt"));
    String line =null;
    while( (line = br.readLine() ) != null ){
    if ( (line!=null)&&line.trim().equals("") ) break;
    //第二分支的时候判断if ("-------------".equals(line))
    sb1.append(line);
    // sb1.append("\r\n");  你只要打印的话这行就不用了
    }
    if(line.trim().equals("")){
    while( (line = br.readLine() ) != null ){
    sb2.append(line);
    // sb2.append("\r\n"); 你只要打印的话这行就不用了
    }
    }

    System.out.println(sb1); //先打印下看看sb1是否正确,已转成单行
    System.out.println(sb2); //再打印下看看sb2是否正确 ,已转成单行
    System.out.println("\r\n\r\n\r\n");
    //sb1 sb2都正确了,表明已把空行前后提取了,再继续处理-----------
    System.out.println("最终你想要的结果如下:");
    output(sb1);
    output(sb2);
    }

    public  static void output(StringBuffer sb){
    String s = new String(sb);
    String ss[] = s.split("-------------");
    for(String temp:ss){
    System.out.println(temp);
    }
    }
    }/*ddd.txt 文件中内容如下:
    sien
    -------------
    bobo

    xixi
    -------------
    ioio
    */