直接看代碼: java
Resources myResources = getResources(); InputStream myFile = myResources.openRawResource(R.raw.myfilename);
不少文件操做的類仍是在java.io.File包中,Android也提供了一些指定的工具方法去管理文件,如: android
1.deleteFile 使你可以移除被當前APP所建立的文件。 windows
2.fileList 返回一個包含全部文件的字符串數組。 數組
這些方法對於清理臨時文件將很是有用,若是你的App奔潰了,或者不可預知的被殺。 緩存
大多APP都會考慮的事兒,就是相對於APP建立的文件,或者下載的文件應該存放在哪兒? 安全
有2種方式去存儲:內部或者外部。 app
注意:很是重要的一點要注意的是,存儲在外部介質的文件,好比SD卡,是沒有安全保障的,任何其它的App能夠修改或者刪除它。還有就是:文件存放在外部介質並不是全部時候都有用,好比SD卡被拔出等。 eclipse
安卓提供2個一致的方法,經過App Context,getDir和getExternalFilesDir,都將返回一個包含路徑的文件對象,前者是內部App存儲目錄,後者則是外部。 ide
注意:但存放在這些文件夾或者子文件夾下的文件,一旦APP卸載,都會被刪除。getExternalFilesDir是API level 8(Android 2.2)引入的。若是想支持更早的版本,你能夠調用Environment.getExternalStorageDirectory返回一個外部存儲的根路徑。 工具
注意:這2個方法所涉及的文件與APP共存,若APP被卸載,則存放在這些文件夾或者子文件夾下的文件也會被刪除。
安卓提供openFileInput和openFileOutput方法去簡化讀寫存放在應用程序沙盒中的文件。
String FILE_NAME = 「tempfile.tmp」; // 建立一個相對私有與當前應用程序的輸出文件流 FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE); // 建立一個輸入文件流 FileInputStream fis = openFileInput(FILE_NAME);
若openFileOutput這方法中的文件不存在,則安卓會默認幫你建立一個。此輸出文件流默認行爲是覆蓋寫的模式,若是你想追加寫入則指定模式爲Context.MODE_APPEND.
默認的,openFileOutput方法建立的文件時相對私有與當前的應用程序,其它應用程序是沒法訪問的。標準的方式在APP之間共享文件是去建立一個Content Provider. 其它的,你也能夠指定模式爲Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITABLE.這2種模式下的文件時能夠被其它應用程序訪問的。
使用Context.MODE_WORLD_WRITABLE模式:
String OUTPUT_FILE = 「publicCopy.txt」; FileOutputStream fos = openFileOutput(OUTPUT_FILE, Context.MODE_WORLD_WRITEABLE);
答:
File file = getFilesDir(); Log.d(「OUTPUT_PATH_」, file.getAbsolutePath());
安卓一樣提供了2種,一個是受管理的內部緩存和一個不受管理的外部緩存。分別經過調用getCacheDir和getExternalCacheDir。一樣,當應用程序被卸載的時候,存儲在這些位置的文件也要被刪除。還有,存放在內部緩存文件夾的,當系統存儲空間不夠的時候也會被刪除。可是存放在外部緩存系統不予理會。
安卓2.2(API level 8)包含了一個方便的方法,Environment.getExternalStoragePublicDirectory。
例子:
String FILE_NAME = 「MyMusic.mp3」; File path = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_MUSIC); File file = new File(path, FILE_NAME); try { path.mkdirs(); [... Write Files ...] } catch (IOException e) { Log.d(TAG, 「Error writing 「 + FILE_NAME, e); }