我有一個與spinners和一個OK按鈕的對話框。我還有一個數組列表,由用戶在旋轉器中選擇項目填充。我希望應用程序將陣列列表保存到文件並在每次啓動時加載(因爲不保存陣列列表在啓動時總是空的)。Android文件編寫,閱讀
所以這裏是我使用的代碼。保存應該沒問題,至少我得到Toast消息說保存好。此代碼是OKbtn偵聽器,這樣當用戶點擊OK,一個項目被添加到ArrayList和總會有這樣的代碼:
if (assignArr.size() > 0)
{
String filename = "file.txt";
ArrayList<String> report = new ArrayList<String>();
for (int i=0; i<assignArr.size(); i++)
{
report.add(assignArr.get(i));
}
FileOutputStream fos;
try {
fos = openFileOutput(filename,Context.MODE_PRIVATE);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(report);
out.close();
Toast.makeText(MainActivity.this, "Saving OK", Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我把裝載部分代碼的開始,但我不認爲它很重要:
words = new ArrayList<String>(50);
try {
InputStream is = getResources().getAssets().open("file.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while((line = br.readLine()) != null)
{
words.add(line);
}
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
if (words.size() > 0)
{
for (int i=0; i<words.size(); i++)
{
assignArr.add(words.get(i));
Toast.makeText(MainActivity.this, "Loading OK", Toast.LENGTH_LONG).show();
}
}
在這種情況下,我從來沒有得到吐司消息。 一個問題可能是文件在哪裏創建?在模擬器和手機上的哪裏?關於手機,它是在SD卡上還是在手機內存上創建的? 我希望這是保存和加載數組列表的正確代碼。 代碼有什麼問題?
更新: 我將InputStream is = getResources().getAssets().open("file.txt");
替換爲InputStream is = openFileInput("file.txt");
現在發生了一些事情。我將保存和加載的結果寫入吐司消息,這很奇怪:
Toast.makeText(MainActivity.this, "Saving OK + " + report, Toast.LENGTH_LONG).show();
請看看它。底部的字眼是部分匈牙利人的名字。所以也許把一個ArrayList保存到一個文件是個問題。
轉到這裏看看這個 http://stackoverflow.com/questions/17650522/write-in-file-and-read-it-and-put-on-in-a-spinner-in-android 祝你好運 – 2013-07-15 09:24:52