#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()
: Возвращает количество нераспределенных байтов в разделе, названном этим абстрактным именем пути.