在安卓系统中,file.length返回始终为0,请问如何解决?

3

我想要检查一个只有URI的文件大小,URI为content://media/external/video/media/813。 我使用以下代码来获取文件大小:

File file=new File(uri.getPath());
                    long ls = file.length();

并且总是会得到0。有任何想法吗?

我猜这是一个目录。 - Avinash Roy
如果文件不存在,file.length()将返回零。 - Jinesh Francis
@AvinashRoy 看了一下 URI,我觉得它不是一个目录。 - shinilms
神知道这是什么。 - Avinash Roy
2个回答

5
尝试以下代码来获取您的文件长度。
 Cursor returnCursor =
                getContentResolver().query(uri, null, null, null, null);
        int sizeIndex = returnCursor.getColumnIndex(OpenableColumns.SIZE);
        returnCursor.moveToFirst();
        int size = (int) returnCursor.getLong(sizeIndex);

对于那些想要获取以KB和MB为单位的大小的人:int sizeKB = size / 1024; int sizeMb = size / (1024 * 1024) - Nima Faraji

3

尝试这个:

String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = context.getContentResolver().query(uri, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();

File file = new File(filePath);
long ls = file.length();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接