扫描文本文件中的字符串,如果找到,则使用该字符串创建新的 txt 文件

Scan text file for a string, if found, create new txt file with that string

所以我想做的是扫描一个 String 的 txt 文件,如果找到 String,则需要创建一个新的 txt 文件并且 String 写入其中。 String、要搜索的txt文件名和will/can创建的txt文件名,都是通过命令行输入的。

public class FileOperations {

  public static void main(String[] args) throws FileNotFoundException {
    String searchTerm = args[0];
    String fileName1 = args[1];
    String fileName2 = args[2];
    File file = new File(fileName1);
    Scanner scan = new Scanner(file);

    while (scan.hasNextLine()) {
      if (searchTerm != null) {
        try {
          BufferedWriter bw = null;
          bw = Files.newBufferedWriter(Paths.get(fileName2), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
          bw.write(searchTerm);
          bw.close();
        } catch (IOException ioe) {
          ioe.printStackTrace();
        }


      }
      scan.nextLine();
    }
    scan.close();
  }
}

我尝试做的是创建一个 while 循环来扫描原始文本文件中的字符串,如果找到该字符串,则创建一个 txt 文件并将该字符串输入其中。

目前正在扫描原始文件(我用 System.out.println 测试过),但是无论 String 是否在原始文件中,都会创建带有字符串的新文件txt 文件与否。

基本上,您只是用错了扫描仪。你需要这样做:

String searchTerm = args[0];
String fileName1 = args[1];
String fileName2 = args[2];
File file = new File(fileName1);

Scanner scan = new Scanner(file);
if (searchTerm != null) { // don't even start if searchTerm is null
    while (scan.hasNextLine()) {
        String scanned = scan.nextLine(); // you need to use scan.nextLine() like this
        if (scanned.contains(searchTerm)) { // check if scanned line contains the string you need
            try {
                BufferedWriter bw = Files.newBufferedWriter(Paths.get(fileName2));
                bw.write(searchTerm);
                bw.close();
                break; // to stop looping when have already found the string
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
        }
    }
}
scan.close();