直接看代码: 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); }