有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

所以我想读一个文件,寻找一个特定的行,接下来的50行左右,然后从该文件中删除这些行,并将其他行写入另一个文件。我需要一些帮助开始,和一些方法的想法。我打算用一种简单的方法。例如,这将是txt文件:

hi
hey
12
14
456
234
23
bye
53
2312
434

我想找到行hey并删除从“hey”到“bye”(包括在内)的所有行。这将在文件中的不同位置重复多次(大约1000次)。而且,中间的行数将始终相同。。。如果可能的话,我甚至可以从“嘿”和下一行中删除。谢谢你的建议

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) 个答案

  1. # 1 楼答案

    这应该是可行的,它将这两个单词作为程序参数(例如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) {}
            }
        }
    }
    

    输入:

    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