有没有办法从android的资产文件夹中打开文件作为File对象?

时间:2011-04-13 09:46:04

标签: android file assets

我想获取位于assets目录中的文件的文件大小。我看到很多例子,比如

 InputStream myInput = appContext.getAssets().open() 

我知道我可以通过简单的循环InputStream来确定文件大小,但我正在寻找一种方法来通过File object执行此操作。
所以我需要一条通往资产的路径我无法确定的事情......如何获得这条道路?
还尝试通过AssetFileDescriptorappContext.getAssets().openFd()获取openNonAssetFd()但没有运气 - 获得FileNotFound或者可能是压缩的例外
BTW那些openFd方法在developer.android.com上“很好地描述”。


我试过下一个代码:

file = new File(new URI("file:///android_asset/db/call3.db"));
Log.i(APP_TAG, "File name: "+file.getName());
Log.i(APP_TAG, "File path: "+file.getPath());
Log.i(APP_TAG, "File length: "+file.length());
Log.i(APP_TAG, "File isFile: "+file.isFile());
Log.i(APP_TAG, "File exists: "+file.exists());

输出到日志:
04-13 12:10:03.413:INFO(6259):文件名:call3.db
04-13 12:10:03.432:INFO(6259):文件路径:/android_asset/db/call3.db
04-13 12:10:03.444:INFO(6259):文件长度:0
04-13 12:10:03.444:INFO(6259):文件isFile:false
04-13 12:10:03.444:INFO(6259):文件存在:false

当然文件的大小不是0,它是195 584字节。

2 个答案:

答案 0 :(得分:5)

  

如何获得这条路?

没有路径。对不起,你所寻求的是不可能的。

答案 1 :(得分:2)

我不确定是否有任何方法可以从资源文件夹中获取File对象,但要查找单行文件的长度,可以使用以下代码。

AssetFileDescriptor afd = context.getAssets().openFd(fileName);
long size = afd.getLength();
相关问题