2013-03-11 102 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) {} 
    } 

    }