我正在为网页浏览器应用程序制作一个书签,此代码正在保存并加载数据,但它没有在新行中附加数据...每次按下按钮都会覆盖以前的数据..我想要每一个时间我在主要活动中调用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;
}
}
答案 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表示将字节写入文件的末尾而不是一开始。