zoukankan      html  css  js  c++  java
  • Android 在外部存储读写文件

    本文主要介绍android中如何在外部存储读写数据

    sd卡的路径

    sdcard:2.3之前的sd卡路径

    mnt/sdcard:4.3之前的sd卡路径

    storage/sdcard:4.3之后的sd卡路径

    打开file explorer

    可以看到sdcard是个空的文件夹,因为这个文件夹是个快捷方式,指向/storag文件夹,接着打开storag文件夹

    读写sd卡

    最简单的打开sd卡的方式

    File file = new File("sdcard/info.txt");

    * 写sd卡需要权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    运行程序

    * 读sd卡,在4.0之前不需要权限,4.0之后可以设置为需要

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    通过api获取sd卡的路径

    * 使用api获得sd卡的真实路径,部分手机品牌会更改sd卡的路径

    Environment.getExternalStorageDirectory()

    * 判断sd卡是否准备就绪

    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))

    完整代码如下:

        public void saveAccount(String name, String pass) {
            // 判断sd卡状态
            if (Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED)) {
                // 得到一个file对象,路径是sd卡的真实路径
                File file = new File("sdcard/info.txt");
                try {
                    FileOutputStream fos = new FileOutputStream(file);
                    fos.write((name + "##" + pass).getBytes());
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                Toast.makeText(this, "sd卡不可用哟", 0).show();
            }
        }
    
        public void loadAccount() {
            File file = new File("sdcard/info.txt");
            if (file.exists()) {
                try {
                    FileInputStream fis = new FileInputStream(file);
                    // 把字节流转换为字节流
                    BufferedReader br = new BufferedReader(new InputStreamReader(
                            fis));
                    String text = br.readLine();
                    String[] s = text.split("##");
                    // 获取用户输入的账号和密码
                    EditText et_name = (EditText) findViewById(R.id.et_name);
                    EditText et_pass = (EditText) findViewById(R.id.et_pass);
                    et_name.setText(s[0]);
                    et_pass.setText(s[1]);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
  • 相关阅读:
    Sql日期时间格式转换
    c#被指定为此窗体的 MdiParent 的窗体不是 MdiContainer?
    kmeans聚类分析
    C# VS2005打开没问题,但是运行解决方案时就整个自动关闭了
    PowerDesigner教程系列(一)概念数据模型
    PowerDesigner概念设计模型(CDM)中的3种实体关系
    spss clementine Twostep Cluster(两步聚类 二阶聚类)
    PowerDesigner教程系列(三)概念数据模型
    Kmeans聚类算法
    c# 中窗体居中代码怎么写?
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5549567.html
Copyright © 2011-2022 走看看