查看: 597|回复: 0
打印 上一主题 下一主题

[求助] 词汇比较 去重复 或者词汇 筛选工具

[复制链接]

该用户从未签到

15

主题

186

回帖

707

积分

举人

Rank: 4

积分
707

灌水大神章

跳转到指定楼层
1
发表于 2017-3-13 19:32:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
A B 两个txt文档,里面都是单词,一个一行。对于A里面的单词 如果 在B里面有,则保留如果在B里面没有 则将其删除删除,并最好将删除的单词输出到另外一个txt C文件当中 。。求java处理方法。我有eclipse 。最好是支持直接文件读取的 new FileReader("F:/A.txt") 这样的 谢谢各位 我刚学到继承。这个还做不了 谢谢 求代码怎么写


这是我之前的提问
https://www.pdawiki.com/forum/thread-20151-1-1.html



代码有了
使用方法  在f盘中放入相应的A和B即可

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<String> wordA = getWords("F:/A.txt");
  List<String> wordB = getWords("F:/B.txt");
  // A单词中B里面有的集合
  List<String> wordC = new ArrayList<String>();
  // A单词中B里面没有的集合
  List<String> wordD = new ArrayList<String>();
   
  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<String> getWords(String filePath) throws IOException {
  List<String> words = new ArrayList<String>();
  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;
}
  
}