2

ログ出力を含むファイルがあり、特定の行を読み取り、特定のポイントから行の途中から最後までを読み取り、基準に一致する次の行に移動したいと考えています。RULE EXECUTING から行末まで読み取りを開始し、その次の行に RULE EXECUTING があることを確認したい場合は、次の行にスキップしない場合は RULE EXECUTING がある場合は、その時点から行末にコピーします.

 FILE SAMPLE

2013-02-14 09:26:20:078 [main] DEBUG sne.ABC.hdhdh.jfjjfj.jkfjfjd.jdsd - RULE EXECUTING --> CMNETSL.hdjjjdlskdnlskd.jgfkdflkdfl_Translation
2013-02-14 09:28:00:312 [main] DEBUG moc.uty.lweifoisd.sfsd.kjfdnkjs.RulesetInvoker  - Rudejgfjkgjf:  After invoking: CMNETSLO
2013-02-14 09:26:20:421 [main] DEBUG sne.ABC.hdhdh.jfjjfj.jkfjfjd.jdsd - RULE EXECUTING --> sne.ABC.hdhdh.jfjjfj.jkfjfjd.jdsd


what I want to get from the line would look like this

RULE EXECUTING --> CMNETSL.hdjjjdlskdnlskd.jgfkdflkdfl_Translation
RULE EXECUTING --> sne.ABC.hdhdh.jfjjfj.jkfjfjd.jdsd
4

3 に答える 3

0

そのためにはファイル全体を読み取る必要があり、FileReader を使用してファイル行を 1 行ずつ読み取って、それぞれの部分文字列「RULE EXECUTING」を検索する必要があります。見つかった場合は、部分文字列メソッドを使用して、部分文字列を出力または処理します。ファイルが完了するまで繰り返し、最も重要なこととして、ファイルを閉じます。

完全なコードサンプルは次のとおりです。

    BufferedReader reader = null;
    try {
        //open file
        reader = new BufferedReader(new FileReader("example.log"));

        int index;

        //read first line
        String line = reader.readLine();

        //go through the entire file line for line
        while (line != null) {

            //look for substring in line
            index = line.indexOf("RULE EXECUTING");
            if(index >= 0 ) {
                //substring found, write result to stdout
                System.out.println(line.substring(index));
            }

            //read next line
            line = reader.readLine();
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            //always close file readers!
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
于 2013-03-20T19:36:44.733 に答える
0
Scanner s = new Scanner(new File("log.txt")); // read file using scanner line by line

while(s.hasNextLine())
{

    String nextLine = s.nextLine(); 

    if(nextLine.startsWith("RULE EXECUTING")) //check if line starts with the key word
    {
              // do whatever you want to do 
    }
}
于 2013-03-20T19:21:21.560 に答える
0

したがって、次のようなものです:

BufferedReader br = new BufferedReader(new FileReader("mylog.log"));

String line;
int idx;
while((line = br.getLine()) != null)
  if((idx = line.indexOf("RULE EXECUTING --> ")) != -1)
    System.out.println(line.substring(idx));

私はそれをIDEで試したりコンパイルしたりしていませんが、おそらくあなたはその考えを理解していると思います.

于 2013-03-20T19:20:05.360 に答える