簡體   English   中英

文件未附加android

[英]File does not append 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對象。 否則,您不需要附加。

我創建了一個基本項目,該項目將String對象寫入文件,然后讀取它。 使用PrintWriterMODE_APPEND ,它按預期方式進行:附加了文本。 但是,使用ObjectOutputStreamMODE_APPENDwriteObject( new String("text") )似乎不會追加,並且僅讀取第一個String對象。 您在評論中說沒有錯誤,但是我可以看到引發異常:

java.io.StreamCorruptedException: Wrong format: ac

您能否確認您的堆棧跟蹤中也有此內容? 我建議您也創建一個基本設置,首先寫一些文本,看看它是否追加,然后嘗試編寫一個簡單的對象並全部閱讀。

發生此異常的原因的解釋如下: java.io.StreamCorruptedException:讀取多個對象時格式錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM