我有文件阅读问题。我会说不出话来。 当用户按下OK btn时,会向assignArr ArrayList添加一个字符串。此时,此字符串将保存到文件中。当用户将新字符串(通过按下OK btn)添加到Arraylist时,只有前一个和新项目在其中,因此没有重复。这就是我将okbtn监听器中的arraylist保存到文件的方式:
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();
}
假设我添加了字符串“Daddy Alex”。 所以输出的是“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();
但在这些情况下,我甚至没有得到Toast msg ......
我不知道为什么这些是错的。有时第一次输出是正常的,但是当我向assignArr添加另一个项目时,写入文件,退出然后重新打开应用程序,这第二项是错误的,但第一项是正确的。我几天来一直在努力奋斗......
答案 0 :(得分:0)
确保你的清单中有这个:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />