Android中数据存储路径的问题

Android中数据存储路径的问题

/storage

  • /storage/usbhost1 (不可读)
  • /storage/extsd (不可读)
  • /storage/sdcard0
  • /storage/emulated
    • /storage/emulated/legacy
    • /storage/emulated/0
      • /storage/emulated/0/Music
      • /storage/emulated/0/Alarms
      • /storage/emulated/0/Pictures
      • /storage/emulated/0/Movies
      • /storage/emulated/0/Download
      • /storage/emulated/0/DCIM
      • /storage/emulated/0/串口.apk
      • /storage/emulated/0/Log.docx

手机存储
手机分为内部存储和外部存储

  • 1.内部存储
主要方法 路径
Environment.getDataDirectory() /data
Environment.getDownloadCacheDirectory() /cache
Environment.getRootDirectory() /system
private void writeData() {
        String filePath = null;
        boolean hasSDCard = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
        if (hasSDCard) {
            filePath = Environment.getExternalStorageDirectory().toString() + File.separator + "hello.txt";
        } else {
            filePath = Environment.getDownloadCacheDirectory().toString() + File.separator + "hello.txt";
        }

        try {
            File file = new File(filePath);
            if (!file.exists()) {
                File dir = new File(file.getParent());
                dir.mkdirs();
                file.createNewFile();
            }
            FileOutputStream outputStream = new FileOutputStream(file);
            outputStream.write(str.getBytes());
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    1. Environment.getExternalStorageState()

      用来查看SD卡的状态,只要返回的状态与Environment.MEDIA_MOUNTED的值相同,就代表当前SD卡的状态是可用的。

      boolean hasSDCard = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
      
    1. Environment.getExternalStorageDirectory()
      /storage/emulated/0
      获取的是存储卡的外部第一层路径,也就是存储卡的根界面。
    1. File.separator

      分隔符,window系统中是\,linux系统中是/,为了使在不同的系统中都可以使用,File.separator就是解决这个问题的,在不同的系统中分隔符都是适用的。

      filePath = Environment.getExternalStorageDirectory().toString() + File.separator + "hello.txt";
      
    1. Environment.getDownloadCacheDirectory()
      下载缓存内容目录。
    1. file.exists()
      检查文件或目录是否存在。
      如果指定的文件或目录存在则返回true,否则返回false。

file.getParent()
返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。

    1. mkdirs()
      建立多级文件夹
    1. mkdir()
      只会建立一级文件夹
    1. createNewFile()
      创建一个不存在的文件

你可能感兴趣的:(Android中数据存储路径的问题)