我有一个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作为参考).
必须有更好的方法来执行此操作,我确实需要确切的大小信息,并且由于文件很大,因此无法首先将它们读入内存.为什么我的方法会产生不正确的结果?
在此先感谢您的帮助.
解决方法:
尽管我没有找到查询为什么返回错误结果的原因,但是我找到了另一种获取文件大小的方法,该方法似乎可行:
using (var fd = contentResolver.OpenFileDescriptor(uri, "r"))
size = fd.StatSize;