用于从文件中删除某些文本的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,那么它将被上述程序覆盖,否则将创建新文件。