我正在寻找一种阅读“PDF”尺寸的方法。到目前为止,我尝试了以下方法:
注意:所有权限都已就位,我确实可以访问该文件。
1)使用文件长度
>>> mydigits = re.sub(r'\D', '', mystr)
>>> mydigits
'98198384669702977470'
>>> re.findall(r'.{10}', mydigits)
['9819838466', '9702977470']
结果: 它适用于图像,但在pdf文件上返回0
2)使用光标
path = "/storage/emulated/0/Download/c4611_sample_explain.pdf";
File file = new File(path);
int file_size = Integer.parseInt(String.valueOf(file.length() / 1024));
结果:
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();
}
我还有别的事吗?
答案 0 :(得分:1)
在您发布的“使用游标”结果上,表明您使用的方案不正确:
URI: file:///storage/emulated/0/Download/c4611_sample_explain.pdf
如果您看到URI以“ file:”开头,但是使用游标方法,则URI必须以“ content:”开头。
首先,您需要检查方案,如果它是“文件”或“内容”,那么您将获得文件大小。我希望这段代码对您有所帮助:
if (resultCode == RESULT_OK && data != null) {
Uri filePath = data.getData();
if (data.getData().getScheme().equals("file")) {
File file = new File(filePath.toString());
int fileSize = (int) file.length();
System.out.println("This is the file size: " + fileSize);
} else if (data.getData().getScheme().equals("content")) {
Cursor returnCursor = this.getContentResolver().query(filePath, null, null, null, null);
assert returnCursor != null;
int sizeIndex = returnCursor.getColumnIndex(OpenableColumns.SIZE);
returnCursor.moveToFirst();
String fileSize = returnCursor.getString(sizeIndex);
System.out.println("This is the file size: " + fileSize);
}
}
答案 1 :(得分:0)
将您的if语句更改为:
String[] projection = { MediaStore.Files.FileColumns.SIZE };
Cursor cursor = contentResolver.query(uri, projection, null, null, null);
并为查询方法添加投影:
^
答案 2 :(得分:0)
尝试以下方法
格式化文件大小的方法
public static String formatSize(long size) {
String suffix = null;
if (size >= 1024) {
suffix = " Bytes";
size /= 1024;
if (size >= 1024) {
suffix = " MB";
size /= 1024;
}
}
StringBuilder resultBuffer = new StringBuilder(Long.toString(size));
int commaOffset = resultBuffer.length() - 3;
while (commaOffset > 0) {
resultBuffer.insert(commaOffset, ',');
commaOffset -= 3;
}
if (suffix != null) resultBuffer.append(suffix);
return resultBuffer.toString();
}
并从存储中读取文件
String pathname= Environment.getExternalStorageDirectory().getAbsolutePath();
String fullpath= pathname + "/dummy2.pdf";
File file=new File(fullpath);
String size = formatSize(file.length());// this will give you the size of the file
希望它对你有所帮助。
快乐编码;)