文件没有附加android



我有一个文件,我想在其中添加唯一项。每次我尝试追加文件时,该文件都会覆盖。一个类用于添加唯一项,另一个类用于查看作为ListView的项。在写Context.MODE_APPEND的同时执行写操作,第二类的ListView显示空白

AddingToFile.java

String filename2="grocery24_2.txt";
ArrayList<String> pantryarrlist = new ArrayList<String>();
public void showResult(View v) { button onclick event
    for (Product p : listviewAdapter.getBox()) {
        if (p.selected){
            if(!pantryarrlist.contains(p.name)) {
                pantryarrlist.add(p.name);
                try {
                    FileOutputStream fos = openFileOutput(filename2, Context.MODE_PRIVATE);
// This gives blank->FileOutputStream fos = openFileOutput(filename2, Context.MODE_APPEND);
                    ObjectOutputStream oos = new ObjectOutputStream(fos);
                    oos.writeObject(pantryarrlist);
                    oos.close();
                    fos.close();
                } catch (Exception e) {
                }
            }
        }
    }
}

Pantry.java从文件

读取
public class Pantry extends ListActivity{
ListView listView;
ArrayAdapter<String> adapter;
String filename = "grocery24_2.txt";
List newArrList = new ArrayList();
List pantryarrlist = new ArrayList();
File file = new File(filename);
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pantry);
    listView = getListView();
    listView.setTextFilterEnabled(true);
    listView.setFocusable(true);
        FileInputStream fis = openFileInput(filename);
        ObjectInputStream ois = new ObjectInputStream(fis);
        newArrList = (ArrayList) ois.readObject();
        pantryarrlist.addAll(newArrList);
        ois.close();
        fis.close();
       adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, newArrList);
       listView.setAdapter(adapter);
    }

虽然我对您想要实现的目标有点困惑,但我假设您希望在一个文件中包含多个pantryarrlist对象。否则就不需要追加了

我创建了一个基本项目,它将字符串对象写入文件,然后读取它。使用PrintWriterMODE_APPEND,结果如预期的那样:添加了文本。然而,使用ObjectOutputStream, MODE_APPENDwriteObject( new String("text") ),它似乎不会追加,它只读取第一个String对象。你在评论中说没有错误,但我可以看到一个异常触发:

java.io.StreamCorruptedException: Wrong format: ac

你能确认你的stacktrace中也有这个吗?我建议你也创建一个基本的设置,你首先写一些文本,看看它是否追加,然后尝试写一个简单的对象,并读取它们。

异常发生的原因解释如下:java.io.StreamCorruptedException:读取多个对象时格式错误

相关内容

  • 没有找到相关文章

最新更新