2013-12-18 11 views
0

我正在編寫一個應用程序,需要每隔一段時間從android文件系統進行讀寫操作。該應用程序由一個包含三個不同片段的ActionBarActivity組成。我的計劃是創建一個模型類,它管理我所有的數據,並在它認爲合適的時候讀取/寫入到android文件系統。到目前爲止,我無法弄清楚如何讓一個不是活動的課程獲得這些功能。Android文件系統可以從不是活動的類寫入嗎?

如果可能的話,我的最終目標是允許I/O在模型類中自行工作,以儘可能少地保持耦合。

這是我正在嘗試運行在我的模型中的當前代碼。

private String readFromFile() { 

    String ret = ""; 
    Scanner s; 

    ArrayList<Player> loadedRosterList = new ArrayList<Player>(); 
    try { 
     InputStream inputStream = openFileInput("applicationRoster.txt"); 

     if (inputStream != null) { 
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
      String receiveString = ""; 

      while ((receiveString = bufferedReader.readLine()) != null) { 
       s = new Scanner(receiveString); 
       s.useDelimiter(","); 

       Player newP = new Player(s.next(), s.next(), s.next()); 
       loadedRosterList.add(newP); 
      } 

      inputStream.close(); 

      currentRoster.replacePlayers(loadedRosterList); 
     } 
    } 
    catch (FileNotFoundException e) { 
     Log.e("login activity", "File not found: " + e.toString()); 
    } catch (IOException e) { 
     Log.e("login activity", "Can not read file: " + e.toString()); 
    } 

    return ret; 
} 
+0

Android項目就像其他任何Java項目一樣。只需添加一個新的類文件並在活動中使用它。問題是什麼? –

+0

我正試圖創建一個與活動分開的新類。由於這個原因,android現在允許我直接訪問文件系統。我試圖找到解決方法來保持我的模型。 – cmw2379

+0

@ cmw2379 - 這是不正確的。 Android不關心你從哪個類訪問文件系統,只關心它運行的過程以及誰擁有它。一些特定的文件訪問方法依賴於一個Context對象來找出合適的目錄路徑,但是你可以按照Szymon的建議傳遞一個Context,或者從你的Activity類的Context中找出正確的路徑,然後保存/傳遞需要執行文件系統工作的類的實際路徑(您不必擔心以您需要擔心泄漏Context對象的方式泄漏路徑) –

回答

0

您可以通過一個Context到你的方法:

private String readFromFile(Context context) { 

} 

要小心,不要泄露的背景下這種方法之外,以避免內存泄漏。

相關問題