在Android遊戲開發時需要讀入大量Asset(資源).如『3D模型』『紋理』『音頻』『地型』等Asset(資源)文檔.Android建議把資源存放於『res』目錄,但它不適合存放原生資源. 在遊戲開發時使用『assets』目錄,所有遊戲資源文檔存放該目錄下.而且還可以指定目錄結構. 要訪問『assets』目錄需AssetManager資源管理器:
『assets』目錄位於『\app\src\main\assets』這點與Eclipse有所不同.
AssetManager asset_manager = context.getAssets();
打開Asset文檔並返回輸入流InputStream
InputStream input_stream = asset_manager.open(file_name);
讀取『外部緩存』SD卡
Asset只適合用於讀取遊戲資源.若在遊戲運行時讀寫文檔數據.若訪問SD卡需要加入度寫權限:
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>
<uses-permission android:name=”android.permission.READ_EXTERNAL_STORAGE”/>
然後需要確定手機是否裝有SD卡
獲取『外部緩存』SD卡裝態.其實現在手機載固態硬盤劃出部分空間作為『外部緩存』
String state = Environment.getExternalStorageState();
Environment.MEDIA_MOUNTED:SD卡插入並可正常讀寫
Environment.MEDIA_MOUNTED_READ_ONLY:SD卡已插入,但只能讀取
獲取『外部緩存』路徑
File file_path = Environment.getExternalStorageDirectory();
並不建議在『外部緩存』SD卡讀寫.一SD卡可能被彈出.二可能需要用戶授權.如果數據較小建議寫入『內部存儲』
APP內部存儲緩存目錄『/data/data/< package name >/files/』
File file_path = context.getFilesDir() ;
生成目錄
file_path.mkdir();
連接路徑
File file = new File(file_path,file_name);
打開文檔並返回輸入流
InputStream input_stream = new FileInputStream(file);
打開文檔並返回輸出流
OutputStream output_stream = new FileOutputStream(file);
獲取指定寫入/讀取路徑 | 存儲位置 |
Environment.getExternalStorageDirectory() | /mnt/sdcard/ |
context.getExternalFilesDir() | /mnt/sdcard/Android/data/< package name >/files/ |
context.getExternalCacheDir() | /mnt/sdcard/Android/data/< package name >/cach/ |
context.getFilesDir() | /data/data/< package name >/files/ |
context.getCacheDir() | /data/data/< package name >/cach/ |
獲取指定寫入/讀取路徑 | 簡介 |
Environment.getExternalStorageDirectory() | 外部存儲 |
context.getExternalFilesDir() | 外部存儲 |
context.getExternalCacheDir() | 外部臨時存儲 |
context.getFilesDir() | 內部存儲 |
context.getCacheDir() | 內部臨時緩存 |