检查文件java中的重复字符串

时间:2015-03-21 17:48:23

标签: java android io

我有一个文件,我在那里写数据。我试过谷歌搜索,但我尝试过的所有例子都让我更加困惑。 我正在将数据输入到文件中,这是正确发生的,其中所选项目将附加到文件中。我的问题是,我想检查输入的字符串是否已经存在于文件中,如果存在,我想跳过它。 我用来将数据输入到文件的代码如下,但我不知道如何更改它以检查重复。

for (EventsObj p : boxAdapter.getBox()) {
        if (p.box){
            String result = p.name + " " + p.price;

            try {
                // open file for writing
                OutputStreamWriter out= new OutputStreamWriter(openFileOutput("UserEvents.txt",MODE_APPEND));
                // write the contents to the file
                out.write(result);
                out.write('\n');
                // close the file
                out.close();
            }

            catch (java.io.IOException e) {
                //do something if an IOException occurs.
                Toast.makeText(this, "Sorry Text could't be added", Toast.LENGTH_LONG).show();
            }
    }
}

勾选复选框,然后获取与其相关的名称和价格,并将其附加到文件中。但我想检查一下这还不存在。任何帮助将不胜感激,我已经筋疲力尽谷歌并尝试了很多东西。

3 个答案:

答案 0 :(得分:1)

因此,如果我正确理解了您的问题,该文件包含许多由换行符分隔的字符串。

您要做的是逐行读取文件内容,并将这些行存储在HashSet< String>中。然后,打开要附加的文件并附加附加字符串,但前提是该文件不包含该字符串。正如其他答案所示,您使用contains方法。但是,与其他答案不同,我并不是建议使用字符串列表;相反,我建议使用HashSet,因为它更有效。

在逐行读取文件内容时,您可以执行一些基本检查:文件是否已包含重复的行?您可能希望通过向用户发出文件格式无效的警告来处理这些问题。或者你可能想继续。

答案 1 :(得分:0)

您应首先从文件中读取并创建包含所有输入的字符串列表。 然后在添加到文件之前,您可以检查字符串列表是否包含要添加的字符串(只需确保字符串共享相同的格式,以便找到匹配项)。如果它返回false添加到文件,如果是,则不要添加到文件中。

不应该是一项如此艰巨的任务。您可以使用contains方法。

答案 2 :(得分:-1)

您可能需要将文件的内容保存在程序中的String中。效率有点低,但目前我没有看到任何其他方式,只能跟踪程序中的内容而不是文件中的内容。 因此,在运行将文本附加到文件的程序之前,您应该做的第一件事是解析所有文本的文件:

File yourFile = new File("file-path-goes-here");
Scanner input = null;

try {
    input = new Scanner (new FileInputStream(yourFile) );
}
catch (FileNotFoundException e) {;;;}

String textFromFile = "";
while (input.hasNextLine())
    textFromFile += input.nextLine() + "\n";

//Now before adding to the file simply run something like this
if(textFromFile.indexOf("string-to-write-to-file") != -1)
    ;//do not write to file
else {
    ;//write to file and add to textFromFile
    textFromFile += "string-you-added-to-file" + "\n";
}

希望这能回答你的问题。如果有什么不清楚,请告诉我。