2011-03-15 113 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