求代码,A⼀B两个txt文档,里面都是一个一行单词,如果A的单词B里有,保留,如果无则删除,java处理

2025-06-25 22:49:36
推荐回答(1个)
回答1:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Test {
 
 public static void main(String[] args) throws Exception {
  
  List wordA = getWords("F:/A.txt");
  List wordB = getWords("F:/B.txt");
  // A单词中B里面有的集合
  List wordC = new ArrayList();
  // A单词中B里面没有的集合
  List wordD = new ArrayList();
  
  for (String words : wordA) {
   if (wordB.contains(words)) {
    wordC.add(words);
   } else {
    wordD.add(words);
   }
  }
  
  // 如果wordD为空,说明A的单词B里面都有
  if (wordD.isEmpty()) {
   return;
  }
  
  File a = new File("F:/A.txt");
  File c = new File("F:/C.txt");
  c.createNewFile();
  
  // 向A文件中写入B中存在的单词
  BufferedWriter bw = new BufferedWriter(new FileWriter(a));
  for (String w : wordC) {
   bw.write(w + "\r\n");
  }
  bw.flush();
  bw.close();
  
  // 向C文件中写入B中不存在的单词
  bw = new BufferedWriter(new FileWriter(c));
  for (String w : wordD) {
   bw.write(w + "\r\n");
  }
  bw.flush();
  bw.close();
 }
 
 /**
  * 从文件中读取单词
  * @param filePath 文件完整路径
  * @return
  * @throws IOException 
  */
 static List getWords(String filePath) throws IOException {
  List words = new ArrayList();
  File file = new File(filePath);
  
  if (!file.exists() || file.isDirectory()) {
   System.out.println("文件路径无效");
   return words;
  }
  
  BufferedReader br = new BufferedReader(new FileReader(file));
  String tmp = null;
  
  while ((tmp = br.readLine()) != null) {
   words.add(tmp);
  }
  
  br.close();
  return words;
 }
 
}