如何读取文件并查找到另一行的特定行 - Java

时间:2014-07-31 14:03:50

标签: java bufferedreader readline fileinputstream writetofile

所以我想读取一个文件并查找一个特定的行,然后跟随50行左右,并从该文件中删除这些行并将其他行写入另一个文件。我需要一些帮助入门,以及一些方法的想法。我打算做一个简单的方法。例如,这将是txt文件:

hi
hey
12
14
456
234
23
bye
53
2312
434

我想找到行嘿并删除" hey"中的所有行。直到" bye" (包括的)。这将在文件中在不同的地方重复多次(约1000次)。此外,它们之间的行数总是相同的...所以如果可能的话我甚至可以从" hey"删除。和下一个____行数。谢谢你的任何想法!

FileInputStream fstream = new FileInputStream("file name");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

String strLine; 

//Read File Line By Line
while ((strLine = br.readLine()) != null)   {
  // Print the content on the console
  System.out.println (strLine);
}

//Close the input stream
br.close();
}

1 个答案:

答案 0 :(得分:0)

这应该有效,它将两个单词作为程序参数(例如MyApp.jar hey bye

public class Main
{
     public static void main(String[] args)
     {
         if(args.length < 2) 
         {
             System.exit(0);
         }
         String ignoreStartWord = args[0];
         String ignoreEndWord = args[1];
         BufferedReader br = null;
         BufferedWriter bw = null;
         try
         {
             br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("fileName"))));
             bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("fileName2"))));
             boolean ignoreStarted = false;
             String line = null;
             while((line = br.readLine()) != null)
             {
                 if(ignoreStarted == false)
                 {
                     if(line.equals(ignoreStartWord))
                     {
                         ignoreStarted = true;
                     }
                     else
                     {
                         bw.write(line);
                         bw.newLine();
                     }
                 }
                 else
                 {
                     if(line.equals(ignoreEndWord))
                     {
                         ignoreStarted = false;
                     }
                 }
            }
        }
        catch(IOException e)
        {
             e.printStackTrace();
        }
        catch(FileNotFoundException e)
        {
             e.printStackTrace();
        }
        finally
        {
             if(br != null) try { br.close(); } catch(IOException e) {}
             if(bw != null) try { bw.close(); } catch(IOException e) {}
        }
    }
}

INPUT:

hi
hey
12
14
456
234
23
bye
53
2312
434
hi
hey
12
14
456
234
23
bye
53
2312
434
hi
hey
12
14
456
234
23
bye
53
2312
434
hi
hey
12
14
456
234
23
bye
53
2312
434

输出:

hi
53
2312
434
hi
53
2312
434
hi
53
2312
434
hi
53
2312
434