将多个String写入文件而不删除浏览器的第一个ANDROIDcollections夹

我正在为学校制作一个简单的浏览器,我正在尝试制作collections夹。 这段代码在这里添加了一个文件的喜好(所以我可以在应用程序关闭后保留它)并在TextView中显示它。 我的问题是它只能保存一个。 如果我添加第二个,则替换第一个。 我以为我可以将它们添加到数组或arrayList(或任何有效的,我愿意接受建议),但我不能成功。 谢谢您的帮助。

package com.example.browser3; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class Favorite extends Activity { EditText etName; EditText etAdress; Button bAdd; TextView tvDisplay; protected void onResume() { readFile("favorite.txt", tvDisplay); super.onResume(); } public void writeFile(String fileName, EditText v, EditText x){ try { OutputStreamWriter out=new OutputStreamWriter(openFileOutput(fileName,0)); out.write(v.getText().toString()+ x.getText().toString()); out.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void readFile(String fileName, TextView w){ try { InputStream in=openFileInput(fileName); if(in!=null){ InputStreamReader reader= new InputStreamReader(in); BufferedReader buffreader= new BufferedReader(reader); StringBuilder builder= new StringBuilder(); String str; while((str=buffreader.readLine())!=null){ builder.append(str+ "\n"); } in.close(); w.setText(builder.toString()); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.favorite); etName = (EditText) findViewById(R.id.etName); etAdress = (EditText) findViewById(R.id.etAdress); bAdd = (Button) findViewById(R.id.bAdd); tvDisplay = (TextView) findViewById(R.id.tvDisplay); bAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { writeFile("favorite.txt",etName, etAdress); readFile("favorite.txt", tvDisplay); } }); } } 

写第一个位置即prepend然后你需要使用它

  private void writeToFile(Context context,String data){ try{ String path=context.getFilesDir().getAbsolutePath(); File file = new File(path + File.separator + fileName); RandomAccessFile rf = new RandomAccessFile(file,"rws"); file.getParentFile().mkdirs(); Log.d("creating file path",path); byte[] text = new byte[(int) file.length()]; rf.readFully(text); rf.seek(0); rf.writeBytes(data); rf.write(text); Log.d("write","writing file..."); rf.close(); }catch(Exception e){e.printStackTrace(); Log.d("caught", "data wititng fail");} } 

如果你想追加使用这个

  private void writeToFile(Context context,String data){ try{ String path=context.getFilesDir().getAbsolutePath(); File file = new File(path + File.separator + fileName); RandomAccessFile rf = new RandomAccessFile(file,"rws"); file.getParentFile().mkdirs(); Log.d("creating file path",path); byte[] text = new byte[(int) file.length()]; rf.readFully(text); rf.seek(0); rf.write(text); rf.writeBytes(data); Log.d("write","writing file..."); rf.close(); }catch(Exception e){e.printStackTrace(); Log.d("caught", "data wititng fail");} } 

或者你可以在MODE_APPEND模式下打开文件..以附加模式打开文件更改为此OutputStreamWriter out=new OutputStreamWriter(openFileOutput(fileName,true));