我有文件寫入問題。我的言辭會很短。 當用戶按下OK btn時,字符串被添加到assignArr ArrayList。這時,這個字符串被保存到一個文件中。當用戶向Arraylist添加一個新的字符串(通過按OK btn)時,只有前者和新的項目在裏面,所以沒有重複。這就是我在okbtn聽衆ArrayList中保存到一個文件:Android文件讀取問題
if (assignArr.size() > 0)
{
String filename = "tomato35.txt";
FileOutputStream fos;
try {
fos = openFileOutput(filename,Context.MODE_PRIVATE);
ObjectOutputStream out = new ObjectOutputStream(fos);
fos.flush();
for (int t=0; t<assignArr.size(); t++)
{
out.writeUTF(assignArr.get(t).toString() + "\n");
Toast.makeText(MainActivity.this, "Saving OK + " + assignArr.get(t), Toast.LENGTH_LONG).show();
}
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(MainActivity.this, "assignArrsize: " + assignArr.size(), Toast.LENGTH_LONG).show();
}
讓我們假設我添加了字符串「爸爸亞歷克斯」。 所以這個輸出是「Saving OK + Daddy Alex」,它是assignArr中的一個項目。 現在我退出了應用程序,因此assignArr Arraylist變空了,因爲它只是一個變量。現在,我重新打開我的應用程序,現在文件的內容應該被讀入一個ArrayList:
try {
InputStream is = openFileInput("tomato35.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
String NL = System.getProperty("line.separator");
while((line = br.readLine()) != null)
{
assignArr.add(line);
}
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
for (int i=0; i<assignArr.size(); i++)
{
Toast.makeText(MainActivity.this, "AssignArr." + i + " = " + assignArr.get(i), Toast.LENGTH_LONG).show();
}
我張貼基於assignArr不同的字符串一些輸出:
我也曾經嘗試這樣做:
String filename = "tomato35.txt";
BufferedWriter bw = null;
bw = new BufferedWriter(new FileWriter(filename, true));
for (int t=0; t<assignArr.size(); t++)
{
bw.write(assignArr.get(t).toString() + "\n");
Toast.makeText(MainActivity.this, "Saving OK + " + assignArr.get(t), Toast.LENGTH_LONG).show();
}
bw.flush();
和
PrintWriter f;
File file ;
file = new File("tomato44.txt");
f = new PrintWriter(file);
for (int t=0; t<assignArr.size(); t++)
{
f.println(assignArr.get(t).toString());
Toast.makeText(MainActivity.this, "Saving OK + " + assignArr.get(t), Toast.LENGTH_LONG).show();
}
f.close();
但在這些情況下,我甚至沒有得到吐司味精...
我不知道爲什麼這些錯誤。有時第一次輸出是可以的,但是當我將其他項目添加到assignArr時,寫入文件,退出然後重新打開應用程序,這第二項是錯誤的,但第一項是可以的。我一直在掙扎與此天現在...
什麼都沒有改變。 – erdomester 2011-03-15 23:05:28