Конструктор File
принимает в качестве аргумента путь к файловой системе. Вы дали ему «путь», извлеченный из URI, который, вероятно, не является путем к объекту файловой системы. (Возможно, вы используете URL-адрес file:
, но не проверяете схему, поэтому не уверены.)
Если у вашего File
объекта есть путь к несуществующему файлу, то при вызове File::length
в документации говорится, что length()
вернет ноль.
В мире Java вы можете попробовать следующее:
URI uri = ...
File file = new File(uri);
long length = file.length();
Однако это работает, только если:
-
URI
- это абсолютный URI со схемой file:
.
- Файл, который обозначает URI, существует в пространстве имен локальной файловой системы.
(Если 1. неверно, вы получите исключение. Если 2. неверно, вы получите нулевой результат.)
Это также должно работать на платформе Android ... без добавления дополнительных зависимостей.