繁体   English   中英

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

[英]Is there a way to open file as File object from android's assets folder?

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

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

我知道我可以通过简单的循环读取InputStream来确定文件大小,但我正在寻找一种方法来通过File object来做到这一点。
所以我需要一条通往资产的道路,这就是我无法确定的事情......如何获得这条道路?
还尝试通过appContext.getAssets().openFd()openNonAssetFd()获取AssetFileDescriptor ,但没有运气 - 得到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字节。

如何走这条路?

没有路径。 抱歉,你所寻求的是不可能的。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM