Android APK开发基础——数据存储之文件

一、JAVA IO

 

首先具备介绍一下JAVA IO的基础知识,点击链接:白大虾,这篇有很详细的介绍。

 

Java IO原理

  • IO流用来处理设备之间的数据传输。

  • Java程序中,对于数据的输入/输出操作以"流(stream)" 的方式进行。

  • java.io包下提供了各种"流"类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。

流的分类

  • 按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)

  • 按数据流的流向不同分为:输入流,输出流

  • 按流的角色的不同分为:节点流,处理流

(抽象基类)

字节流

字符流

输入流

InputStream

Reader

输出流

OutputStream

Writer

  1. Java的IO流共涉及40多个类,实际上非常规则,都是从如上4个抽象基类派生的。

  2. 由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。

  3. 字节流:以byte为单位传输

  4. 字符流:以char为单位传输

IO流体系

 

二、举个例子

保存文件到内存:

 /**
     * @Description: /data/data/** /files目录写数据
     * @param:  调用该方法的Context;要写入的string
     * @return:
     */
    public void fileWrite(Context context,String buf){
//        String filename参数:在/data/data//files目录下存储时的文件名。
//        int mode参数:文件的操作模式,主要有两种模式可选择:MODE_PRIVATE, MODE_APPEND。
        // 默认为MODE_PRIVATE,当指定相同文件名进行读写的时候,新的内容会覆盖原有内容;
        try {
            FileOutputStream fileOutputStream = context.openFileOutput("text", MODE_PRIVATE);
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(fileOutputStream));
            writer.write("fileWrite...........");   //写入固定的String
            writer.write(buf);           //写入输入的String
            writer.write("\n");          //写入换行符
            writer.flush();
            writer.close();
            fileOutputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * @Description:  /data/data/** /files目录读数据
     * @param:  调用该方法的Context
     * @return:
     */
    public  void fileRead(Context context){
        String line = "";
        try {
            FileInputStream fileInputStream = context.openFileInput("text");
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
            line = bufferedReader.readLine();
            while (line != null) {
                Log.e(TAG, "fileRead :" + line);
                //回调的方式
                mFileSaveCallback.onFileRead(line);

                line = bufferedReader.readLine();
            }
            bufferedReader.close();
            fileInputStream.close();


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    /**
     * @Description: /data/data/ ** /cache 目录写数据
     * @param:
     * @return:
     */
    public void cacheWrite(Context context,String buf){
        File file = new File(context.getCacheDir(), "cache_dir_text");//创建/data/data/<package name>/cache/cache_dir_text文件对象。
        if (!file.exists()) {
            try {
                file.createNewFile();//如果文件不存在,则创建
                FileOutputStream fos = new FileOutputStream(file);
                PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos));
                writer.write("cacheWrite.......");   //写入固定的String
                writer.write(buf);           //写入出入的String
                writer.write("\n");          //写入换行符
                writer.flush();
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * @Description: /data/data/ ** /cache 目录读数据
     * @param:
     * @return:
     */
    public void cacheRead(Context context){
        File file = new File(context.getCacheDir(), "cache_dir_text");
        try {
            FileInputStream fis = new FileInputStream(file);
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
            String line1 = br.readLine();
            while(line1!=null){
                //回调的方式
                mFileSaveCallback.oncacheRead(line1);

                Log.e(TAG, " " + line1);
                line1 = br.readLine();
            }
            br.close();
            fis.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

源码地址:

 

 

参考资料:

1、java IO https://www.cnblogs.com/baixl/p/4170599.html

2、Android中数据存储——文件存储数据 http://blog.csdn.net/to_be_designer/article/details/48274025

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值