2015-12-08 94 views
1

我想知道如何删除ArrayList中存储在外部文本文件中的项目。我正在尝试Iterator方法,但我认为我没有正确地做到这一点。如何从ArrayList中删除存储在外部文本文件中的项目

这是数组列表,其基本上包含的响应

这是方法,它允许一个txt文件来保存的响应的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."); 
     } 
    } 

这是允许该方法从中

public ArrayList<String> readAList(String filename) 
{ 
    ArrayList<String> list = new ArrayList<>(); 
    try (BufferedReader reader = 
      new BufferedReader(new FileReader(filename))) { 
     String line = reader.readLine(); 
     while(line != null) { 
      list.add(line.trim()); 
      line = reader.readLine(); 
     } 
    } 
    catch(IOException e) { 
     System.out.println("Problem reading file: " + filename + 
          " in readAList"); 
    } 
    return list; 
} 

阅读我叫分配这样

一个ArrayList
notRecognised = help.readAList("missed.txt"); 

我试着写下面的方法,以便能够从文本文件中删除响应,但我认为我没有正确写入它。

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

} 
+0

你不能从一个文本删除项目。你只能在文本文件上写下,省略你正在“删除”的内容。 – CubeJockey

回答

1

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

你可以在这里读到:JDBC Database Access

+0

**备注:**您也可以使用CSV文件来删除您的数据,这比使用纯文本文件要容易得多。 – user3437460

1

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

+0

谢谢@Viacheslav使得更有意义 – user5647516

相关问题