我有一个视频文件在资源的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的值。我做错了什么?
openRawResource()
返回的不是普通的InputStream
,而是AssetInputStream
。这个子类覆盖了available()
方法,并且能够提供可靠的信息。 - cawInputStream.available()
的文档,你会发现这就是解释来源。AssetInputStream
在 JavaDoc 中使用了完全相同的文本:http://developer.android.com/reference/java/io/InputStream.html#available() 但是源代码显示AssetInputStream.available()
覆盖了超类的方法并从一个本地方法获取其结果:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.0_r1/android/content/res/AssetManager.java#AssetManager.AssetInputStream.available%28%29 - caw