android如何获取assets文件夹下面文件的大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android如何获取assets文件夹下面文件的大小相关的知识,希望对你有一定的参考价值。
现在想做一个读取assets下文件同时,知道读取的“进度”。但是前提是得知道文件大小,最好是多少行,因为我前面是按行读取的。文件比较多比较大,如果不再次利用流写一遍,还有没有其他办法?
参考技术A InputStream in = getResources().getAssets().open(fileName);//获取文件的字节数
int lenght = in.available();本回答被提问者采纳 参考技术B 我觉得按行读取进度必定不准确,还是改成用流来读取;用 progressBar来实现进度现实就可以了。追问
是用流读取的呢。用流读取怎么的进度怎么和progressBar绑定?
(将流InputStream 封装成BufferedReader )然后利用BufferedReader 按行读取
readline无法控制读取进度,用BufferReader.read(),设置一个缓存1k-4k,然后循环读取。
ex:
byte[] buff = new byte[1024];
int len;
while ((len = in.read(buff)) > 0)
如何获取Assets的路径
有两种方法可以获取assets的绝对路径: 第一种方法: String path = file:///android_asset/文件名; 第二种方法: InputStream abpath = getClass().getResourceAsStream("/assets/文件名"); But,这样获取的路径并不能直接访问到assets的资源,如果一个mp3放在assets下,通过以上两种方法获得的路径并不能直接播放里面的mp3文件,why? 那是因为在安卓应用中使用assets目录下存放的资源文件,是代表应用无法直接访问的原生资源,应用程序通过AssetManager以二进制流的形式来读取资源。 第一种获取路径的方法,目前我所知道的,只是针对html的展示来使用的,比如你用到了webview,那么html的path可以用这种方法显示,其他情况不行。 那么我们想用MediaPlayer播放里面的视频或者音乐该怎么做呢?可以以以下方式进行播放! MediaPlayer mediaPlayer=new MediaPlayer(); AssetFileDescriptor afd = getAssets().openFd("musics/SleepOceation.mp3"); mediaPlayer.setDataSource(afd.getFileDescriptor()); mediaPlayer.prepare();(注意这句话必须有!) mediaPlayer.start(); OK,这样就能顺利播放assets下的音乐或者视频文件了!
以上是关于android如何获取assets文件夹下面文件的大小的主要内容,如果未能解决你的问题,请参考以下文章