android 文件读写I/O 大集合 (持续更新)

一、资源文件 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();
    }
}

转载于:https://my.oschina.net/JiangTun/blog/714422

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值