2011-03-07 160 views
0

我有一個與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保存到一個文件是個問題。

enter image description here

+0

轉到這裏看看這個 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

回答

0

您通過openFileOutput創建的文件寫入到您的應用程序的私有目錄,你可以開始使用Context#getFilesDir()(通常是/data/data/<your-app-package>/)。

此目錄與資產文件夾無關。