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

我想获得位于资产目录中的文件的文件大小。 我看到很多例子

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

我知道我可以通过简单的读取循环中的InputStream来确定文件大小,但是我正在通过File object寻找一种方法。
所以我需要一个资产的path,多数民众赞成我不能确定的事情…如何获得path?
还尝试通过appContext.getAssets().openFd()获得AssetFileDescriptor appContext.getAssets().openFd()openNonAssetFd()但没有运气 – 得到FileNotFound或可能压缩的exception。
顺便说一下,这些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):文件path:/android_asset/db/call3.db
04-13 12:10:03.444:INFO(6259):文件长度:0
04-13 12:10:03.444:INFO(6259):File isFile:false
04-13 12:10:03.444:INFO(6259):文件存在:false

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

Solutions Collecting From Web of "有没有办法从Android的资产文件夹作为文件对象打开文件?"

如何获得path?

没有path。 你正在寻找的是不可能的,对不起。

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

 AssetFileDescriptor afd = context.getAssets().openFd(fileName); long size = afd.getLength();