文件操作

logcat

  • 日志信息总共分为5个等级

    • verbose

    • debug

    • info

    • warn

    • error

    • System.out.print()

      (1)Log.v:这里的v代表Verbose啰嗦的意思,对应的log等级为VERVOSE。采用该等级的log,任何消息都会输出。

      (2)Log.d:这里的d代表Debug调试的意思,对应的log等级为DEBUG。采用该等级的log,除了VERBOSE级别的log外,剩余的4个等级的log都会被输出。

      (3)Log.i:这里的i代表information,为一般提示性的消息,对应的log等级为INFO。采用该等级的log,不会输出VERBOSE和DEBUG信息,只会输出剩余3个等级的信息。

      (4)Log.w:w代表warning警告信息,一般用于系统提示开发者需要优化android代码等场景,对应的等级为WARN。该级别log,只会输出WARN和ERROR的信息。

      (5)Log.e:e代表error错误信息,一般用于输出异常和报错信息。该级别的log,只会输出该级别信息。一般Android系统在输出crassh等致命信息的时候,都会采用该级别的log。

  • 定义过滤器方便查看

  • System.out.print输出的日志级别是info,tag是System.out

  • Android提供的日志输出api

文件读写操作

  • Ram内存:运行内存,相当于电脑的内存
  • Rom内存:内部存储空间,相当于电脑的硬盘
  • /data/data/包名/xxx
  • sd卡:外部存储空间,相当于电脑的移动硬盘
    在内部存储空间中读写文件
  • /sdcard/

使用路径api读写文件

  • getFilesDir()得到的file对象的路径是data/data/包名/files

    • 存放在这个路径下的文件,只要你不删,它就一直在
  • getCacheDir()得到的file对象的路径是data/data/包名/cache

  • 存放在这个路径下的文件,当内存不足时,有可能被删除

  • 系统管理应用界面的清除缓存,会清除cache文件夹下的东西,清除数据,会清除整个包名目录下的东西

  • openFileOutput/openFileInput的四种模式(直接在/data/data/包名/files目标下操作)
    Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写;
    Context.MODE_WORLD_READABLE: 指定该SharedPreferences数据能被其他应用程序读,但不能写,但是google不建议使用这个
    Context.MODE_WORLD_WRITEABLE: 指定该SharedPreferences数据能被其他应用程序读,但是google不建议使用这个
    Context.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件;
    了解:
    android底层是linux:

  • MODE_PRIVATE:-rw-rw----

  • MODE_APPEND:-rw-rw----

  • MODE_WORLD_WRITEABLE:-rw-rw–w-

  • MODE_WORLD_READABLE:-rw-rw-r–
    Linux文件的访问权限

    • 在Android中,每一个应用是一个独立的用户
    • drwxrwxrwx
    • 第1位:d表示文件夹,-表示文件
    • 第2-4位:rwx,表示这个文件的拥有者用户(owner)对该文件的权限
      • r:读
      • w:写
      • x:执行
    • 第5-7位:rwx,表示跟文件拥有者用户同组的用户(grouper)对该文件的权限
    • 第8-10位:rwx,表示其他用户组的用户(other)对该文件的权限

在外部存储读写数据

sd卡的路径

  • sdcard:2.3之前的sd卡路径

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

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

  • 最简单的打开sd卡的方式

File file = new File("sdcard/info.txt");
  • 写sd卡需要权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  • 读sd卡,在4.0之前不需要权限,4.0之后可以设置为需要
  • 使用api获得sd卡的真实路径,部分手机品牌会更改sd卡的路径(这个方法已经过时)

Environment.getExternalStorageDirectory()

  • 判断sd卡是否准备就绪

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

`MEDIA_UNKNOWN SD卡未知`

`MEDIA_REMOVED SD卡移除`

`MEDIA_UNMOUNTED SD卡未安装`

`MEDIA_CHECKING SD卡检查中,刚装上SD卡时`

`MEDIA_NOFS SD卡为空白或正在使用不受支持的文件系统`

`MEDIA_MOUNTED SD卡安装`

`MEDIA_MOUNTED_READ_ONLY SD卡安装但是只读`

`MEDIA_SHARED SD卡共享`

`MEDIA_BAD_REMOVAL SD卡移除错误`

`MEDIA_UNMOUNTABLE 存在SD卡但是不能挂载,例如发生在介质损坏`

google建议使用的名部目录

```
Context.getExternalFilesDirs(String)files目录
Context.getExternalCacheDirs()缓存目录
Context.getExternalMediaDirs()这个是API大于21以上使用
说明:this.getExternalFilesDir()
1.如果填空,那么就是sdcard/Android/data/包名/files/
2.如果填具体的文件夹名,那么就是sdcard/Android/data/包名/files/文件夹名
3.如果填系统给我们定义的名称例:Environment.DIRECTORY_DOWNLOADS那么会在sdcard/Android/data/包名/files/Download文件夹目录下
DIRECTORY_MUSIC 音乐目录

DIRECTORY_PICTURES 图片目录

DIRECTORY_MOVIES 电影目录

DIRECTORY_DOWNLOADS 下载目录

DIRECTORY_DCIM 相机拍照或录像文件的存储目录

DIRECTORY_DOCUMENTS 文件文档目录

```

SharedPreference

用SharedPreference存储账号密码

  • 往SharedPreference里写数据

    //1.拿到一个SharedPreference对象
    SharedPreferences sp = getSharedPreferences(“config”, MODE_PRIVATE);
    //2.拿到编辑器,开启编辑模式
    Editor ed = sp.edit();
    //3.写数据
    ed.putBoolean(“name”, name);

    ​ //4.提交

    ​ ed.commit();

  • 从SharedPreference里取数据

    //1.拿到一个SharedPreference对象

    SharedPreferences sp = getSharedPreferences(“config”, MODE_PRIVATE);
    //2.从SharedPreference里取数据

    ​ //sp.getXX(键,没取到返回默认值)

    ​ String name = sp.getBoolean(“name”, “”);

  • 3)删除指定数据 editor.remove(“name”); editor.commit();

  • 4)清空数据 editor.clear(); editor.commit();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值