Android数据存储之文件存储

1、将数据存储到文件中

private void save() {
        String data = "Data to save";
        FileOutputStream out = null;
        BufferedWriter writer = null;

        try {
            out = openFileOutput("data", Context.MODE_PRIVATE);
            writer = new BufferedWriter(new OutputStreamWriter(out));
            writer.write(data);
        } catch (IOException e) {

            e.printStackTrace();
        } finally {
            try {
                if (writer != null) {
                    writer.close();
                }
                if (out != null) {
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

Context中提供了一个OpenFileOutput()方法,可以将数据存储到指定的文件。第一个参数是文件名,可以不包含路径,因为文件默认存储到/data/data//files/目录下面的。第二个参数是操作模式,主要有两种MODE_PRIVATE和MODE_APPEND两种模式。前者是默认操作模式,表示指定同样文件名的时候,所写入的内容将会覆盖原有文件中的内容。后者给指定文件追加内容。在这里,openFileOut()方法能够得到一个FileOutputStream对象,然后借助他构建出一个OutputStreamWriter对象,接着再用OutputStreamWriter构建出一个BufferedWriter对象

2、从文件中读取数据

private StringBuilder load(){
        FileInputStream in=null;
        BufferedReader reader=null;
        StringBuilder content=new StringBuilder();

        try {
            in =openFileInput("data");
            reader=new BufferedReader(new InputStreamReader(in));
            String line="";
            while((line=reader.readLine())!=null){
                content.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try{
                if(reader!=null){
                    reader.close();
                }
                if(in!=null){
                    in.close();
                }
            }catch (IOException e){
                e.printStackTrace();
            }

        }
        return content;

    }

3、向sd中存储数据

private void writeSDcard(String str) {
    try {
        // 判断是否存在SD卡
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            // 获取SD卡的目录
            File sdDire = Environment.getExternalStorageDirectory();
            FileOutputStream outFileStream = new FileOutputStream(
                    sdDire.getCanonicalPath() + "/test.txt");
            outFileStream.write(str.getBytes());
            outFileStream.close();
            Toast.makeText(this, "数据保存到text.txt文件了", Toast.LENGTH_LONG)
                    .show();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

4、从sd中读取数据

// 从SD卡中读取数据
    private void readSDcard() {
        StringBuffer strsBuffer = new StringBuffer();
        try {
            // 判断是否存在SD
            if (Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED)) {
                File file = new File(Environment.getExternalStorageDirectory()
                        .getCanonicalPath() + "/test.txt");
                // 判断是否存在该文件
                if (file.exists()) {
                    // 打开文件输入流
                    FileInputStream fileR = new FileInputStream(file);
                    BufferedReader reads = new BufferedReader(
                            new InputStreamReader(fileR));
                    String st = null;
                    while ((st = reads.readLine()) != null) {
                        strsBuffer.append(st);
                    }
                    fileR.close();
                } else {
                    Toast.makeText(this, "该目录下文件不存在", Toast.LENGTH_LONG).show();
                }
            }
                }
                    }

记得在Androidstudio的Androidmanifest.xml配置文件注册访问手机sd卡的权限


<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值