-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 次”。请帮忙。

4

4 回答 4

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

也不要忘记break;在你的for循环之后(在 内if)放一个,这样你就不会在你的50 lines.

于 2013-03-11T06:27:02.883 回答
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;
            }
        }
    }
}
于 2013-03-11T06:28:18.107 回答
1
line = reader.readLine();

上面的行应该在 for 循环内。

于 2013-03-11T06:31:42.877 回答
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) {}
    }

    }
于 2013-03-11T06:42:58.493 回答