📌  相关文章
📜  用于从文件中删除某些文本的Java程序

📅  最后修改于: 2022-05-13 01:55:34.475000             🧑  作者: Mango

用于从文件中删除某些文本的Java程序

先决条件: PrintWriter , BufferedReader

给定两个文件 input.txt 和 delete.txt。我们的任务是执行文件提取(输入-删除)并将输出保存在文件说 output.txt

例子 :


朴素算法:

1. Create PrintWriter object for output.txt
2. Open BufferedReader for input.txt
3. Run a loop for each line of input.txt
   3.1 flag = false
   3.2 Open BufferedReader for delete.txt
   3.3 Run a loop for each line of delete.txt
      ->  If  line of delete.txt is equal to current line of input.txt 
            -> flag = true
            -> break loop

4. Check flag, if false
     -> write current line of input.txt to output.txt
5. Flush PrintWriter stream and close resources.

要成功运行以下程序 input.txt 和 delete.txt 必须在同一文件夹中退出或为它们提供完整路径。

// Java program to perform file
// operation output = input-delete
  
import java.io.*;
  
public class FileOperation
{
    public static void main(String[] args) throws IOException 
    {
        // PrintWriter object for output.txt
        PrintWriter pw = new PrintWriter("output.txt");
          
        // BufferedReader object for input.txt
        BufferedReader br1 = new BufferedReader(new FileReader("input.txt"));
          
        String line1 = br1.readLine();
          
        // loop for each line of input.txt
        while(line1 != null)
        {
            boolean flag = false;
              
            // BufferedReader object for delete.txt
            BufferedReader br2 = new BufferedReader(new FileReader("delete.txt"));
              
            String line2 = br2.readLine();
              
            // loop for each line of delete.txt
            while(line2 != null)
            {
                if(line1.equals(line2))
                {
                    flag = true;
                    break;
                }
                  
                line2 = br2.readLine();
            }
              
            // if flag = false
            // write line of input.txt to output.txt
            if(!flag)
                pw.println(line1);
              
            line1 = br1.readLine();
              
        }
          
        pw.flush();
          
        // closing resources
        br1.close();
        pw.close();
          
        System.out.println("File operation performed successfully");
    }
}

输出:

File operation performed successfully

注意:如果 cwd(当前工作目录)中存在 output.txt,那么它将被上述程序覆盖,否则将创建新文件。

更好的解决方案是使用 HashSet 来存储 delete.txt 的每一行,然后在遍历 input.txt 的行时,检查它是否在 hashset 中。如果不存在,则将该行写入 output.txt。

要成功运行以下程序 input.txt 和 delete.txt 必须在同一文件夹中退出或为它们提供完整路径。

// Efficient Java program to perform file
// operation output = input-delete
  
import java.io.*;
import java.util.HashSet;
  
public class FileOperation
{
    public static void main(String[] args) throws IOException 
    {
        // PrintWriter object for output.txt
        PrintWriter pw = new PrintWriter("output.txt");
          
        // BufferedReader object for delete.txt
        BufferedReader br2 = new BufferedReader(new FileReader("delete.txt"));
          
        String line2 = br2.readLine();
          
        // hashset for storing lines of delete.txt
        HashSet hs = new HashSet();
          
        // loop for each line of delete.txt
        while(line2 != null)
        {
            hs.add(line2);
            line2 = br2.readLine();
        }
                      
        // BufferedReader object for input.txt
        BufferedReader br1 = new BufferedReader(new FileReader("input.txt"));
          
        String line1 = br1.readLine();
          
        // loop for each line of input.txt
        while(line1 != null)
        {
            // if line is not present in delete.txt
            // write it to output.txt
            if(!hs.contains(line1))
                pw.println(line1);
              
            line1 = br1.readLine();
        }
          
        pw.flush();
          
        // closing resources
        br1.close();
        br2.close();
        pw.close();
          
        System.out.println("File operation performed successfully");
    }
}

输出:

File operation performed successfully

注意:如果 cwd(当前工作目录)中存在 output.txt,那么它将被上述程序覆盖,否则将创建新文件。