2015-12-08 93 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

相關問題