【发布时间】:2017-04-27 23:00:06
【问题描述】:
我正在编写一个方法,它接收 Twitter 的 Status 对象的 List 作为参数,打开一个包含 String 推文表示的日志文件,检查是否有任何 String 表示 @987654325 @ 对象已写入文件 - 如果是,则将其从列表中删除,否则将 Status 附加到文件中。
一切正常,直到我尝试写入文件。什么都没有写。我被引导相信这是由于在两个不同的地方打开文件的方法:new File("tweets.txt") 和new FileWriter("tweets.txt, true)。
这是我的方法:
private List<Status> removeDuplicates(List<Status> mentions) {
File mentionsFile = new File("tweets.txt");
try {
mentionsFile.createNewFile();
} catch (IOException e1) {
// Print error + stacktrace
}
List<String> fileLines = new ArrayList<>();
try {
Scanner scanner = new Scanner(mentionsFile);
while (scanner.hasNextLine()) {
fileLines.add(scanner.nextLine());
}
scanner.close();
} catch (FileNotFoundException e) {
// Print error + stacktrace
}
List<Status> duplicates = new ArrayList<>();
for (Status mention : mentions) {
String mentionString = "@" + mention.getUser().getScreenName() + " \"" + mention.getText() + "\" (" + mention.getCreatedAt() + "\")";
if (fileLines.contains(mentionString)) {
duplicates.add(mention);
} else {
try {
Writer writer = new BufferedWriter(new FileWriter("tweets.txt", true));
writer.write(mentionString);
} catch (IOException e) {
// Print error + stacktrace
}
}
}
mentions.removeAll(duplicates);
return mentions;
}
【问题讨论】:
标签: java file filewriter bufferedwriter