如何在android中附加数据(新行中的每个数据)

时间:2014-01-24 08:05:52

标签: android file-io fileoutputstream

我正在为网页浏览器应用程序制作一个书签,此代码正在保存并加载数据,但它没有在新行中附加数据...每次按下按钮都会覆盖以前的数据..我想要每一个时间我在主要活动中调用bookmarkload();方法它应该将数据保存在新行而不是覆盖它。请帮助我,因为我是新手知道什么行输入where..so它开始追加数据..在此先感谢..请尽可能详细给出答案。

public class Bookmark {

FileOutputStream fos;
FileInputStream fis = null;

public void bookmarksave(Context context,String FILENAME,String data){

    try {
        fos = context.openFileOutput(FILENAME, 0);
        fos.write(data.getBytes());
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public String bookmarkload(Context context,String FILENAME){

    String collected =null;
    try{
        fis =context.openFileInput(FILENAME);
        byte[] dataArray = new byte[fis.available()];
        while(fis.read(dataArray) != -1){
            collected = new String(dataArray);
            fis.close();
        }
    } catch(FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return collected;
}
}

3 个答案:

答案 0 :(得分:1)

fos.write(System.getProperty("line.separator").getBytes());

试试这个...新数据将被追加到新行......

答案 1 :(得分:0)

将行fos = context.openFileOutput(FILENAME, 0);更改为

fos = context.openFileOutput(FILENAME, Context.MODE_APPEND);

这将以追加模式打开您的文件,而不是默认(覆盖)模式。

您还应该添加一个新行,否则您将继续使用与之前相同的行:

fos.write(System.getProperty("line.separator").getBytes());

答案 2 :(得分:0)

您可以使用SharedPreferences保存书签。这非常方便。如果您想使用File来存储它们。您可以使用new FileOutputStream(filename,true),true表示将字节写入文件的末尾而不是一开始。