Java程序比较两个文本文件,然后将第一个文本文件中的变量替换为第二个文件中的变量到第三个文件中



所以我想问一下是否有任何方法可以修改我目前拥有的代码,以便它只替换文本文件的某些部分。 假设我有一个名为 TestFile1 的文本文件,其中包含

A = 苹果 B = 香蕉 C = 胡萝卜 D = 榴莲

另一个称为TestFile2,它包含

A = 艺术 C = 蛤蜊

我想发生的是代码应该能够比较两个文本文件,如果它发现有两个匹配的变量,则 TestFile3 的输出文件将如下所示

A = 艺术 B = 香蕉 C = 蛤蜊 D = 榴莲

另外,我想让它动态化,这样我就不必每次更改变量时都更改代码,以便它可以用于其他文本文件。

目前,我目前只有这段代码,但它所做的只是它只是完全用 TestFile1 替换 TestFile2,这不是我想要发生的。

import java.nio.file.Paths;
import java.nio.file.Path;
import java.nio.file.Files;
import java.nio.file.OpenOption;
import java.nio.charset.Charset; 
import java.io.*; 
import java.util.Scanner;
public class FindAndReplaceTest {
static void replaceTextFile(String fileName, String target, String replacement, String toFileName) throws IOException
{
Path path = Paths.get(fileName);
Path toPath = Paths.get(toFileName);
Charset charset = Charset.forName("UTF-8");
BufferedWriter writer = Files.newBufferedWriter(toPath, charset);
Scanner scanner = new Scanner(path, charset.name());
String line;
while (scanner.hasNextLine()) {
line = scanner.nextLine();
line = line.replaceAll(target, replacement);
writer.write(line);
writer.newLine();
}
scanner.close();
writer.close();
}
public static void main(String[] args) throws IOException{
replaceTextFile("C:\Users\LS1-10\Documents\TestFile2.txt", "Write", "Read", "C:\Users\LS1-10\Documents\TestFile1.txt");
/* 
System.out.println("Note: Make sure files to merge are in the same directory as this program!");
Scanner in = new Scanner(System.in);
String output, file1name, file2name;
System.out.print("Enter output file name: ");
output = in.nextLine();
PrintWriter pw = new PrintWriter(output + ".txt"); 
System.out.print("Enter name of first file: ");
file1name = in.nextLine();
BufferedReader br = new BufferedReader(new FileReader(file1name + ".txt")); 
String line = br.readLine(); 
System.out.print("Enter name of second file: ");
file2name = in.nextLine();
br = new BufferedReader(new FileReader(file2name + ".txt")); 
line = br.readLine(); 
pw.flush(); 
br.close(); 
pw.close(); 
System.out.println("Replaced variables in " + file1name + ".txt with variables in " + file2name + ".txt into " + output + ".txt"); */
}
}

我注释掉了 psvm 中要求用户输入文件名的部分,因为我只是从我以前的程序中获取了它,所以我所需要的只是比较两个文件并使输出按预期显示。任何帮助将不胜感激。谢谢!

考虑到所有内容都适合内存,最优雅的方式是:

  1. 将 file2 反序列化为映射
  2. 读取 File1 时,检查变量在映射中是否有关联的值,并在需要时替换,然后再输出到 File3。

相关内容

  • 没有找到相关文章

最新更新