我正在尝试使用arrayList从Text文件中删除项目。 ArrayList从文本文件中获取其值,然后将其显示在ListView中。
我弹出了一个上下文菜单,并为我提供了从列表中删除该项目的选项。
在文本文件中,所有项目都在新行上。
如何从文件中删除特定项目? ArrayList将清除它自己,并在执行操作时将数据拉入ArrayList,以便对其进行排序。
从数组中删除项目的代码:
int id = info.position;
for(int i = array.size()-1; i >=0; i--){
array.remove(id);
}
答案 0 :(得分:1)
File != ArrayList
,ArrayList
对File
和File
一无所知,对ArrayList
一无所知。
执行所需操作的方法是在需要时再次重写文件内的数据(当您从ArrayList
删除项目时,调用更新TextFile
)的方法< / p>
您应该在 ArrayList
之前将其称为(或者您将失去所有价值!)
一个例子:
List<String> values = new ArrayList<String>();
values.add("A");
values.add("B");
values.add("C");
values.add("D");
values.add("E");
values.add("D");
BufferedWriter fileWriter = null;
try
{
fileWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("fileName.txt")));
for (String value : values)
{
fileWriter.write(value + System.getProperty("line.separator"));
}
}
finally
{
if (fileWriter != null)
fileWriter.close();
}
我认为这是一种安全的方法,而不必依赖于文件不被其他来源(以任何方式)更改的事实
答案 1 :(得分:0)
如果ArrayList
中的每个项目都等同于文件中的每一行,那么只需跟踪ArrayList
中已删除项目的位置索引。然后重写除跟踪索引之外的整个文件(应该是同一行)。
基本上,一旦您从ArrayList
删除了该项目,只需在循环浏览更新后的ArrayList
时覆盖该文件。