一、Context
全局的环境对象,提供了很多方便的操作,帮助我们快速的获取数据,进行一些常规的操作。
1.1、获取路径
getFilesDir()等同于/data/data/包名/files/
File file = new File(getFilesDir(),"info.txt");
1.2、缓存文件路径
getCacheDir()等同于/data/data/包名/cache/
File file = new File(getCacheDir(),"info.txt");
1.3、上下文存储数据
1.通过Context下的openFileOutput()获取输出流
FileOutputStream fos = this.openFileOutput("info.txt", MODE_PRIVATE);
这两个方法第一个参数为文件名,第二个参数为模式(私有、可读、可写、可读可写),该方法保存文件的目录:/data/data/<package name>/files。
其中权限包含四种:
2.通过Context下的openFileInput()获取输入流
FileInputStream fis = this.openFileInput("info.txt");
1.4、资源目录
assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
a) 先在Activity里面调用getAssets() 来获取AssetManager引用。
b) 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。
c) 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。
d) 调用AssetManager.close() 关闭AssetManager。
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作:
以下为raw文件中读取:
public String getFromRaw(){
try {
InputStreamReader inputReader = new InputStreamReader(getResources().openRawResource(R.raw.test1)); BufferedReader bufReader = new BufferedReader(inputReader); String line=""; String Result=""; while((line = bufReader.readLine()) != null) Result += line; return Result; } catch (Exception e) { e.printStackTrace(); } }
以下为assets文件中读取:
public String getFromAssets(String fileName){
try {
InputStreamReader inputReader = new InputStreamReader(getResources().getAssets().open(fileName) ); BufferedReader bufReader = new BufferedReader(inputReader); String line=""; String Result=""; while((line = bufReader.readLine()) != null) Result += line; return Result; } catch (Exception e) { e.printStackTrace(); } }
待续