2011-03-15 111 views
0

我有文件写入问题。我的言辞会很短。 当用户按下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不同的字符串一些输出: enter image description here

我也曾经尝试这样做:

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时,写入文件,退出然后重新打开应用程序,这第二项是错误的,但第一项是可以的。我一直在挣扎与此天现在...

回答

0

请确保您有这个在您的清单:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

什么都没有改变。 – erdomester 2011-03-15 23:05:28