|
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;
}
}
|
|