【发布时间】:2018-05-08 02:45:16
【问题描述】:
我正在寻找一种读取“PDF”大小的方法。到目前为止,我尝试了以下方法:
注意:所有权限都已到位,我确实可以访问该文件。
1) 使用文件长度
path = "/storage/emulated/0/Download/c4611_sample_explain.pdf";
File file = new File(path);
int file_size = Integer.parseInt(String.valueOf(file.length() / 1024));
结果: 它适用于图像,但在 pdf 文件上返回 0
2) 使用光标
Uri uri = Uri.fromFile(new File(path));
Cursor cursor = contentResolver.query(uri, null, null, null, null);
String size= "null";
if (cursor != null) {
size=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.SIZE));
cursor.close();
}
结果:
size: null
path: /storage/emulated/0/Download/c4611_sample_explain.pdf
URI: file:///storage/emulated/0/Download/c4611_sample_explain.pdf
UPDATE: Cursor returns null
还有什么我应该做的吗?
【问题讨论】:
-
在从
cursor读取值之前,您没有调用cursor.moveToFirst(); -
@Sagar 我怀疑这更多是空光标问题。以我使用 URI 的方式使用它有什么问题吗?
file://如果是这样我怎么能得到content:// -
您可以调试并检查它是否为空。我认为URI很好。在我们深入研究 URI 之前,请确保现有代码正常工作
-
是的,我已经检查了
contentResolver.query(uri, null, null, null, null)返回 null -
Integer.parseInt(String.valueOf(file.length() /??很奇怪,您将整数转换为字符串。请重试。