Как получить путь к каталогу внешнего и внутреннего хранилища

#huawei-developers #harmonyos

Вопрос:

Мне нужно получить путь к каталогу внешнего и внутреннего хранилища, чтобы найти его размер, и я не могу получить путь. В Android у нас есть

 android.os.Enviroment.getExternalStorageDirectory()
 

Ответ №1:

Из официальных документов HarmonyOS — Внутреннее хранилище и внешнее хранилище

Вы можете создать класс utils в своем проекте и использовать следующие функции для получения внутренних и внешних путей хранения:

 /**
 * Returns the absolute path to the directory of the device's internal storage
 *
 * @param context
 * @return
 */
public static File getInternalStorage(Context context) {
    return context.getFilesDir(); //Can be called directly too
}


/**
 * Returns the absolute path to the directory of the device's primary shared/external storage
 *
 * @param context
 * @return
 */
public static File getExternalStorage(Context context) {
    File externalFilesDirPath = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
    String externalStoragePath = "";
    int subPathIndex = externalFilesDirPath.getAbsolutePath().indexOf("/emulated/0/");
    if (subPathIndex > 0) {
        subPathIndex  = "/emulated/0/".length();
    }
    if (subPathIndex >= 0 amp;amp; externalFilesDirPath.getAbsolutePath().contains("/storage/")) {
        externalStoragePath = externalFilesDirPath.getAbsolutePath().substring(0, subPathIndex);
    }
    if (externalStoragePath.length() > 0) {
        externalFilesDirPath = new File(externalStoragePath);
    }
    return externalFilesDirPath;
}
 

Как только вы получите файловый объект, вы можете вызвать следующие функции для получения информации о хранилище —

  • getTotalSpace() : Возвращает размер раздела, названного этим абстрактным именем пути.
  • getUsableSpace​() : Возвращает количество байтов, доступных для этой виртуальной машины в разделе, названном этим абстрактным именем пути.
  • getFreeSpace() : Возвращает количество нераспределенных байтов в разделе, названном этим абстрактным именем пути.