gpt4 book ai didi

java - 逐行将字符串写入文本文件时避免重复

转载 作者:行者123 更新时间:2023-12-01 07:31:50 28 4
gpt4 key购买 nike

我使用以下代码将字符串写入我的简单文本文件:

编辑:

private String fileLocation="/mnt/sdcard/out.txt";

public void saveHisToFile()
{
if (prefs.getBoolean("saveHis", true) && mWordHis != null && mWordHis.size() >= 1)
{
StringBuilder sbHis = new StringBuilder();
Set<String> wordSet= new HashSet<String>(mWordHis);
for (String item : wordSet)
{
sbHis.append(item);
sbHis.append("\n");
}

String strHis = sbHis.substring(0, sbHis.length()-1);
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(
fileLocation), true));
bw.write(strHis);
bw.newLine();
bw.close();
} catch (IOException e) {

}
}
}

字符串成功写入文本文件,但是奇怪的是,有些字符串被覆盖了,比如:

apple
orange
grapes
grapes
grapes
apple
kiwi

我的问题是:

  1. 如何阻止一个字符串被多次写入?
  2. 如果文件中已存在字符串(一行),如何停止将其写入文件?

我咨询过this post但未能将其应用到我的案例中。你能提供一点帮助吗?预先非常感谢。

最佳答案

试试这个:

public void saveHisToFile(Set<String> existingWords)
{
if (prefs.getBoolean("saveHis", true) && mWordHis != null && mWordHis.size() >= 1)
{
StringBuilder sbHis = new StringBuilder();
for (String item : mWordHis)
{
if (!existingWords.contains(item)) {
sbHis.append(item);
sbHis.append("\n");
}
}

String strHis = sbHis.substring(0, sbHis.length()-1);
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(
fileLocation), true));
bw.write(strHis);
bw.newLine();
bw.close();
} catch (IOException e) {

}
}
}

关于java - 逐行将字符串写入文本文件时避免重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16769388/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com