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

求代码AB两个txt文档,里面都是单词,一个一行。对于A里面的单词如果在B里面有,则保留如果在B里面没有则将其删除删除,并最好将删除的单词输出到另外一个txtC文件当中。... 求代码 A B 两个txt文档,里面都是单词,一个一行。对于A里面的单词 如果 在B里面有,则保留如果在B里面没有 则将其删除删除,并最好将删除的单词输出到另外一个txt C文件当中 。。求java处理方法。我有eclipse 。最好是支持直接文件读取的 new FileReader("F:/A.txt") 这样的 谢谢各位 我刚学到继承。这个还做不了 谢谢 求代码怎么写 展开
 我来答
旁明煦0IB
2017-03-13 · TA获得超过352个赞
知道小有建树答主
回答量:245
采纳率:100%
帮助的人:100万
展开全部
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;
 }
 
}
追问
为什么当A文档500k  b文档4000k的就无法处理了 啊     不显示结果 还有 那个c文档 中间有很多换行符  就是空着很多个换行符 能不能把c文档中也设置成一个单词一行啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式