Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从存储在外部txt文件中的ArrayList中删除项_Java_Arraylist_Iterator_Bluej - Fatal编程技术网

Java 如何从存储在外部txt文件中的ArrayList中删除项

Java 如何从存储在外部txt文件中的ArrayList中删除项,java,arraylist,iterator,bluej,Java,Arraylist,Iterator,Bluej,我想知道如何删除存储在外部文本文件中的ArrayList中的项。我正在尝试迭代器方法,但我认为我做得不对 这是arraylist,它基本上包含响应的文本文件 public void writeAList(ArrayList<String> list, String filename) { if(list != null) { try (FileWriter writer = new FileWriter(filename, true))

我想知道如何删除存储在外部文本文件中的ArrayList中的项。我正在尝试迭代器方法,但我认为我做得不对

这是arraylist,它基本上包含响应的文本文件

public void writeAList(ArrayList<String> list, String filename)
    {
        if(list != null) {
            try (FileWriter writer = new FileWriter(filename, true)) {
                for(String item : list) {
                    writer.write(item.trim());
                    writer.write(" ");
                }       
                writer.write("\n");
            }
            catch(IOException e) {
                System.out.println("Problem writing file: " + filename +
                                   " in writeAList");
            }

        }
        else {
            System.out.println("Null list passed to writeAList.");
        }
    }
这就是允许txt文件保存响应数组列表的方法

public void writeAList(ArrayList<String> list, String filename)
    {
        if(list != null) {
            try (FileWriter writer = new FileWriter(filename, true)) {
                for(String item : list) {
                    writer.write(item.trim());
                    writer.write(" ");
                }       
                writer.write("\n");
            }
            catch(IOException e) {
                System.out.println("Problem writing file: " + filename +
                                   " in writeAList");
            }

        }
        else {
            System.out.println("Null list passed to writeAList.");
        }
    }
我尝试编写下面的方法,以便能够从文本文件中删除响应,但我认为我编写的方法不正确

 public String removeResponse(ArrayList<String> words)
{
    Iterator<String> it = words.iterator();
    while(it.hasNext()) {
        String word = it.next();
        String response = notRecognised.get(word);
        if(response.equals (words)) {
            it.remove();
        }
    }

}
公共字符串删除响应(ArrayList单词)
{
迭代器it=words.Iterator();
while(it.hasNext()){
String word=it.next();
字符串响应=未识别。获取(word);
if(response.equals(words)){
it.remove();
}
}
}

无法从文本文件中删除项目。您需要从文件中读取到ArrayList,从ArrayList中删除该项,然后再次将ArrayList保存到文本文件中。此外,覆盖整个文件有时比从文件中删除单个项目要快。

文本文件只存储文本。如果要编辑它(删除项目),必须重写它。更适合CRUD(创建、检索、更新、删除)数据的数据存储是使用数据库,而不是文本文件


您可以在此处阅读:

您不能从文本文件中删除项目。您只能写在文本文件上,而忽略您正在“删除”的内容。备注:您也可以使用CSV文件来对数据进行CRUD,这比使用纯文本文件要容易得多。谢谢@Viacheslav,这更有意义
 public String removeResponse(ArrayList<String> words)
{
    Iterator<String> it = words.iterator();
    while(it.hasNext()) {
        String word = it.next();
        String response = notRecognised.get(word);
        if(response.equals (words)) {
            it.remove();
        }
    }

}