【问题标题】:Java - Removing item from Text File using arrayListJava - 使用arrayList从文本文件中删除项目
【发布时间】:2014-04-12 13:59:13
【问题描述】:

我正在尝试使用 arrayList 从文本文件中删除一个项目。 ArrayList 从文本文件中获取其值,然后将其显示在 ListView 中。

我有一个弹出的上下文菜单,让我可以选择从列表中删除该项目。

在文本文件中,所有项目都在新行上。

我将如何从文件中删除特定项目? ArrayList 将清除其自身,并在执行操作时将数据拉入 ArrayList,以便对其进行排序。

从数组中删除项目的代码:

                  int id = info.position;

              for(int i = array.size()-1; i >=0; i--){
                  array.remove(id);
              }

【问题讨论】:

  • 您不能从文件中删除行。您必须删除 ArrayList 中的行,然后写回文件。

标签: java android arraylist


【解决方案1】:

File != ArrayListArrayList 不知道 FileFile 不知道 ArrayList

一种做你想做的事情的方法是在你需要时再次重写文件中的数据(当你从ArrayList中删除一个项目时,调用一个更新TextFile的方法)

你应该在 before ArrayList clear 之前调用它(否则你将失去所有价值!)

一个例子:

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

我认为这是一种安全的方法,无需过多依赖文件未被其他来源(以任何方式)更改的事实

【讨论】:

    【解决方案2】:

    如果ArrayList 中的每一项都相当于文件中的每一行,那么只需跟踪ArrayList 中已删除项的位置索引即可。然后重写整个文件,除了跟踪的索引(应该是同一行)。

    基本上,一旦您从ArrayList 中删除了该项目,然后在您循环访问更新后的ArrayList 时只需覆盖该文件即可。

    【讨论】:

    • 感谢您的建议。我设法获得了数组项的索引,但是,如果我尝试从 ArrayList 中删除该项,我会遇到死胡同,因为该项没有从 arrayList 中删除。我将我正在使用的代码添加到我的原始帖子中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多