Получить размер файлового ресурса Android? - PullRequest
17 голосов
/ 18 мая 2011

У меня есть видеофайл в папке raw на моих ресурсах.Я хочу найти размер файла.У меня есть этот кусок кода:

Uri filePath = Uri.parse("android.resource://com.android.FileTransfer/" + R.raw.video);
                File videoFile = new File(filePath.getPath());
                Log.v("LOG", "FILE SIZE "+videoFile.length());

Но он всегда дает мне, что размер равен 0. Что я делаю не так?

Ответы [ 4 ]

22 голосов
/ 18 мая 2011

Попробуйте следующие строки:

InputStream ins = context.getResources().openRawResource (R.raw.video)
int videoSize = ins.available();
21 голосов
/ 09 апреля 2013

Попробуйте это:

AssetFileDescriptor sampleFD = getResources().openRawResourceFd(R.raw.video);
long size = sampleFD.getLength()
11 голосов
/ 18 мая 2011

Вы не можете использовать File для ресурсов. Используйте Resources или AssetManager для получения InputStream ресурса, затем вызовите метод available() для него.

Как это:

InputStream is = context.getResources().openRawResource(R.raw.nameOfFile);
int sizeOfInputStram = is.available(); // Get the size of the stream
1 голос
/ 18 ноября 2018

Небольшое отклонение от ответа от @ shem

AssetFileDescriptor afd = contentResolver.openAssetFileDescriptor(fileUri,"r");
long fileSize = afd.getLength();
afd.close();

Где fileUri имеет тип Android Uri

...