Как правильно получить размер файла android.net.Uri?
У меня есть android.net.Uri, указывающий на файл, из которого мне нужно определить размер файла. В настоящее время это делается с помощью запроса на contentResolver (я использую Xamarin, так что это C #):
var cursor = contentResolver.Query(uri, new string[] {
Android.Provider.OpenableColumns.Size,
Android.Provider.OpenableColumns.DisplayName
}, null, null, null);
cursor.MoveToFirst();
size = cursor.GetLong(0);
fileName = cursor.GetString(1);
cursor.Close();
Это работает большую часть времени, но для некоторых файлов значение кажется немного больше, чем правильный размер файла (я использую Total Commander в качестве ссылки).
Должен быть лучший способ сделать это, мне действительно нужна точная информация о размере и, поскольку файлы довольно большие, я не могу сначала прочитать их в память. И почему мой подход дает неверные результаты?
Заранее спасибо за помощь.