若是應用程序須要外部文件資源,那麼能夠經過將其放置在項目層次結構的 res/raw
文件夾中,從而在本身的分發中包含它。java
Resources r = getResources(); InputStream file = r.openRawResource(R.raw.filename);
Android 下提供了兩種建立文件對象:getDir
,getExternalFilesDir
,兩個方法都返回一個 File 對象,每一個對象都有指向內部或外部存儲的目錄路徑。當應用程序被卸載後,存儲在這些目錄下的文件都將被刪除。android
以上兩種方法都接收一個字符串參數,指定用於存放文件的子路徑,在 Environment 類中引入了許多 DIRECTORY_[Category]字符串常量,這些常量用來表示標準目錄名稱,例如:下載目錄、圖片目錄、影視目錄、音樂目錄、拍照目錄緩存
存儲在應用程序文件夾中的文件應該市特定於父應用程序的並且一般不會被媒體掃描。ide
getExternalFilesDir 方法是在 API Level 8 中引入的。要想支持較早的平臺版本,能夠調用
Environment.getExternalStorageDirectory()
獲取外部存儲根路徑。
最好在應用程序本身的子目錄下存儲特定於該應用程序的數據,即:/android/data/data/Your Package Path/files
若是使用上面方式,當應用程序被卸載時不會將自動刪除該應用程序的文件。code
Android 提供了 openFileInput
和 openFileOutput
方法來簡化從應用程序沙箱中的文件讀取和寫入數據流。
建立 FileOutputStream 時,若是你指定的文件名不存在,Android 會爲你建立。對於已經存在的文件的默認行爲就是覆蓋它;想要在文件末尾追加內容,能夠指定模式爲 Context.MODE_APPEND
。
默認狀況下,使用 openFileOutput
方法建立的文件對於調用程序市私有的,其餘應用程序都沒法訪問。在不一樣應用程序間共享文件的標準方式是使用一個 Context Provider。視頻
Android 提供了一個可管理的內部緩存,分別調用 getCacheDir
和 getExternalCacheDir
方法能夠從當前上下文中訪問它們。存儲在緩存中的文件,在應用程序被卸載時都會被刪除。當系統運行在低可用存儲空間時,存儲在內部緩存中的文件可能被系統所刪除;存儲在外部緩存中的文件則不會被刪除。對象
這兩種狀況下,這是用來監控和管理緩存的大小和壽命很好的方式,當超出合理的最大緩存的大小的時候去刪除文件。圖片
API Level 8 還提供了一個便捷的方法 Environment.getExternalStoragePublicDirectory,能夠用來找到存儲應用程序文件的路徑。方便返回每一個類型文件的存儲路徑。
下面是 Environment 經常使用文件類型的常量:資源