Android 第四天

文件的操作

因为android是基于Linux开发的源码进行开发的操作系统,所以有和Linux一样的文件操作权限表示方式如下:

Linux的文件权限

-rwxrw-r┸-1 root root 1213 Feb 2 09:39 abc

  • 10个字符确定不同用户能对文件干什么
  • 第一个字符代表文件(-)、目录(d),链接(l)
  • 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)
  • 第一组rwx:文件所有者的权限是读、写和执行
  • 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行
  • 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行
也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7
  • 1 表示连接的文件数
  • root 表示用户
  • root表示用户所在的组
  • 1213 表示文件大小(字节)
  • Feb 2 09:39 表示最后修改日期
  • abc 表示文件名

在android中的操作

读取

File file = new File(this.getFilesDir(), "info.txt");
        if (file.exists() && file.length() > 0) {
            try {
                FileInputStream fis = new FileInputStream(file);
                BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                String info = br.readLine();
                String[] arr = info.split("##");
                String qq = arr[0];
                String pwd = arr[1];
                m_number.setText(qq);
                m_pwd.setText(pwd);
                fis.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

写入

File file = new File(this.getFilesDir(), "info.txt");
                try {
                    FileOutputStream fos = new FileOutputStream(file);
                    String info = qq + "##" + pwd;
                    fos.write(info.getBytes());
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE,Context.MODE_WORLD_WRITEABLE这两个已经被废弃了

写入SD卡

//检查SD卡的状态
                if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                    //外部存储空间
                    System.out.println(Environment.getExternalStorageDirectory().getAbsolutePath());
                    File sdFile = Environment.getExternalStorageDirectory();
                    long sdSize = sdFile.getFreeSpace();
                    if (sdSize > 5 * 1024 * 1024) { //5M
                        File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + "aaa.3gp");
                        try {
                            FileOutputStream fos = new FileOutputStream(file);
                            byte[] bytes = new byte[1024];
                            for (int i = 0; i < 5 * 1024 * 1024; i++) {
                                fos.write(bytes);
                            }
                            fos.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }else {

                    }
                    //自带的存储空间
                    System.out.println(Environment.getDataDirectory().getAbsolutePath());
                }else {
                }

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 2,518评论 0 2
  • 今天学习Android遇到问题点: 1.Android 相关目录中不能出现空格,否则会报以下错误: project...
    yezi1989阅读 142评论 0 0
  • Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 1.chown chown将指定文件的拥...
    jyt802341阅读 48评论 0 0
  • Linux指令大全 1.cat 使用权限:所有使用者 使用方式:cat [-AbeEnstTuv] [--help...
    muyang_js的简书阅读 1,157评论 0 12
  • permissionn.允许;批准,正式认可,认可user permission 使用权限permission D...
    lengol阅读 694评论 0 51