我有文件写入问题。我的言辞会很短。 当用户按下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