一、资源文件 res/assets
资源类文件在程序编译后,据说是只能读取不能修改的,所以我就思考,是不是编译打包时,会自动把资源文件以二进制编译到程序包里?但是既然二进制bytes都可以修改,那么资源文件一定也可以在打包发布后修改,只不过目前我还没招到办法,暂时略过不表!
res:
assets:
二、沙盒文件 /data/data/<package name>/files
/data/data/ 该路径为系统内部存储文件路径,即:/data/data/<package name>/,各路径都是基于你自己的应用<package name>的内部存储路径下。
注:所有内部存储中保存的文件在用户卸载应用的时候会被删除。
一、 files
1. Context.getFilesDir(),该方法返回/data/data/<package name>/files的File对象。
2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInputStream和FileOutputStream对象。
3. Context.fileList(),返回files下所有的文件名,返回的是String[]对象。
4. Context.deleteFile(String),删除files下指定名称的文件。
二、cache
1. Context.getCacheDir(),该方法返回/data/data/<package name>/cache的File对象。
三、custom dir
getDir(String name, int mode),返回/data/data/<package name>/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。
private Boolean write(String fileName,String content){ FileOutputStream outStream = null; try { outStream = this.openFileOutput(fileName, Context.MODE_PRIVATE+Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); outStream.write(content.getBytes()); outStream.close(); return true; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return false; } private String read(String filename){ FileInputStream inStream = null;//只需传文件名 try { inStream = context.openFileInput(filename); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); //输出到内存 int len=0; byte[] buffer = new byte[1024]; while((len=inStream.read(buffer))!=-1){ outStream.write(buffer, 0, len);// } byte[] content_byte = outStream.toByteArray(); String content = new String(content_byte); System.out.println(content); return content; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; }
三、SD卡文件
/** * 写json * @param json */ private void writeToFile(JSONObject json){ try { File file = new File(Environment.getExternalStorageDirectory(), "荣大云协作.txt"); //第二个参数意义是说是否以append方式添加内容 BufferedWriter bw = new BufferedWriter(new FileWriter(file, false)); bw.write(json.toString()); bw.flush(); Log.e(TAG, "writeToFile: 写入成功!!!!!!!!!"); } catch (Exception e) { e.printStackTrace(); } }