2013-03-11 61 views
-1
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.LineNumberReader; 

public class ReadingfromModellerOutput { 

    public static void main(String args[])throws Exception 
    { 
     // BufferedReader br = new BufferedReader(new FileReader("ModellerOutput.txt")); 
     LineNumberReader reader= new LineNumberReader(new FileReader("ModellerOutput1.txt")); 

     String line; 
       while ((line = reader.readLine()) != null) 
     { 
      if(line.startsWith("Summary")) 
      { 

      System.out.println(reader.getLineNumber()); 
      for(int i=reader.getLineNumber();i<=(reader.getLineNumber()+50);i++) 
      { 
       System.out.println(reader.getLineNumber()); 
       writeTofile(line); 
      } 

      } 
      } 
      } 
    public static void writeTofile(String line) 
    { 
     //System.out.println(reader.getLineNumber()); 
      // for(int i=reader.getLineNumber();i<=(reader.getLineNumber()+50);i++) 
      // { 
       // System.out.println(reader.getLineNumber()); 
      try 
       { 
      BufferedWriter bw = new BufferedWriter(new FileWriter(new File("Output_1.txt"), true)); 
      System.out.println("Hi"); 
      bw.write(line); 
      bw.newLine(); 
      bw.close(); 
     } 
     catch (Exception e) {} 
    } 

    } 

我試圖寫一個代碼來提取文本文件50線以下與 摘要約束違反開頭的行: 上面的代碼編寫同一行約束違規摘要: 50倍。請幫忙。從文件在java中提取特定文本

回答

3
System.out.println(reader.getLineNumber()); 
line = reader.readLine(); // You forgot to put this. 
writeTofile(line); 

也不要忘了把一個break;(內if)您for循環之後,這樣你就不會寫更多行發表您的50 lines

1

我想你應該讀for循環內的行。

但是,您必須再次檢查文件結尾。看看這個實現:

String line = reader.readLine(); 
while (line != null) { 
    if (line.startsWith("Summary")) { 
     for (int i = 0; i < 50; i++) { 
      line = reader.readLine(); 
      if (line != null) { 
       writeTofile(line); 
      } else { 
       break; 
      } 
     } 
    } 
} 
1
line = reader.readLine(); 

上面的行應該是裏面的for循環。

0

試試這個程序。有適當的Break語句

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.LineNumberReader; 

public class ReadingfromModellerOutput { 

    public static void main(String args[])throws Exception 
    { 
     // BufferedReader br = new BufferedReader(new FileReader("ModellerOutput.txt")); 
     LineNumberReader reader= new LineNumberReader(new FileReader("ModellerOutput1.txt")); 

     String line; 
       while ((line = reader.readLine()) != null) 
     { 
      if(line.startsWith("Summary")) 
      { 

      System.out.println(reader.getLineNumber()); 
      for(int i=reader.getLineNumber();i<=(reader.getLineNumber()+50);i++) 
      { 
       System.out.println(reader.getLineNumber()); 
       writeTofile(line); 
      } 
      break; 
      } 
      } 
      } 
    public static void writeTofile(String line) 
    { 
     //System.out.println(reader.getLineNumber()); 
      // for(int i=reader.getLineNumber();i<=(reader.getLineNumber()+50);i++) 
      // { 
       // System.out.println(reader.getLineNumber()); 
      try 
       { 
      BufferedWriter bw = new BufferedWriter(new FileWriter(new File("Output_1.txt"), true)); 
      System.out.println("Hi"); 
      bw.write(line); 
      bw.newLine(); 
      bw.close(); 
     } 
     catch (Exception e) {} 
    } 

    }