Должны ли мы использовать getPath или getAbsolutePath в Android - PullRequest
1 голос
/ 16 июня 2020

При работе с файлами в системе Android должны ли мы использовать File getPath или getAbsolutePath?

Например, мы загрузили файл, затем мы используем DownloadManager.addCompletedDownload(), чтобы добавить этот файл в там должна быть доступна глобальная папка downloads, которую path мы должны передать?

Другой пример, когда мы создаем File внутри context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getPath() папки, getPath или getAbsolutePath?

И последний пример, когда мы используем MediaScannerConnection.scanFile()

Ответы [ 2 ]

2 голосов
/ 16 июня 2020

Согласно DOCS

путь: Строка: абсолютный путь к файлу.

Итак, я полагаю, вам следует передать абсолютный путь. Однако обратите внимание, что DownloadManager.addCompletedDownload() устарел в Android Q

В Android Q они представили концепцию Scoped Storage, которая оказала огромное влияние на то, как вы получаете доступ к файлам. Я думаю, вы можете получить дополнительную информацию из ЗДЕСЬ

Итак, я настоятельно рекомендую протестировать и рассмотреть устройства Android Q в вашей реализации.

1 голос
/ 21 июня 2020

На Android обычно не полагаться на System.getProperty("user.dir"). В любом случае, когда zigote запускает ваше приложение, для него установлено значение / и существует только одна файловая система, поэтому для всех практических целей File.getPath() и File.getAbsolutePath() дадут одинаковые результаты.

Но если вы собираетесь использовать точки стиля , ожидается, что вы будете использовать абсолютные пути, когда ваш процесс взаимодействует с другими процессами, включая системные службы. Поэтому, разговаривая с DownloadManager или MediaScanner , вы лучше express вы намереваетесь, используя getAbsolutePath(). С другой стороны, для путей к файлам в приложении, например getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), чтобы найти и прочитать файл, getPath() будет более подходящим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...