Android遊戲之文檔讀寫

Android遊戲之文檔讀寫

在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() 內部臨時緩存

 

評論