我想检查/ assets /文件夹中是否存在文件。 我该怎么办?请帮忙。如何检查Android资源资源?
10
A
回答
4
你必须执行自己的检查。据我所知,这项工作没有办法。
4
您可以使用Resources.openRawResourceFd(INT渣油)
http://developer.android.com/reference/android/content/res/Resources.html#openRawResourceFd%28int%29
13
我在我的一个应用程序类中添加了一个辅助方法。我假设;
- 资产列表在应用程序运行时不会更改。
List<String>
不是内存猪(我的应用程序中只有78个资产)。- 检查列表上的exists()比试图打开一个文件并处理异常(我没有实际分析过这个)要快。
AssetManager am; List<String> mapList; /** * Checks if an asset exists. * * @param assetName * @return boolean - true if there is an asset with that name. */ public boolean checkIfInAssets(String assetName) { if (mapList == null) { am = getAssets(); try { mapList = Arrays.asList(am.list("")); } catch (IOException e) { } } return mapList.contains(assetName); }
+6
'List.contains()'已经返回布尔值,不需要函数结尾的三元表达式。 – 2012-08-11 00:55:23
9
你也可以只尝试打开该流,如果它失败的文件不存在,如果它没有失败的文件应该有:
/**
* Check if an asset exists. This will fail if the asset has a size < 1 byte.
* @param context
* @param path
* @return TRUE if the asset exists and FALSE otherwise
*/
public static boolean assetExists(Context context, String path) {
boolean bAssetOk = false;
try {
InputStream stream = context.getAssets().open(ASSET_BASE_PATH + path);
stream.close();
bAssetOk = true;
} catch (FileNotFoundException e) {
Log.w("IOUtilities", "assetExists failed: "+e.toString());
} catch (IOException e) {
Log.w("IOUtilities", "assetExists failed: "+e.toString());
}
return bAssetOk;
}
+0
该解决方案要快得多,然后将整个资产的文件夹作为列表,并检查包容。 (我在我的设备上测量了〜50ms vs〜800ms) – azendh 2014-08-01 19:54:34
相关问题
- 1. 资源检查
- 2. 如何检查Azure资源的资源删除操作结果
- 3. Android:检查背景资源可绘制
- 4. 检查OpenGL资源泄漏
- 5. 检查/比较imagebutton资源
- 6. 检查嵌套资源
- 7. 如何检查资源是否存在?
- 8. Android资源$ NotFoundException:资源ID#0x0问题
- 9. 资源内置Android资源中的$ NotFoundException?
- 10. 的Android资源$ NotFoundException:资源ID#0x7f020052
- 11. Android HTML资源引用其他资源
- 12. Android:Howto获取Android资源的资源ID
- 13. 资源与资源
- 14. Android:查看资源ID?
- 15. 的Android查找资源
- 16. android apk资源
- 17. Android资源
- 18. Android:资源$ NotFoundException
- 19. 检查xml中的资源并显示android中的资源的图标
- 20. 如何在C#中查找资源(pinvoke)字符串资源?
- 21. 资源$ NotFoundException:资源ID#0x7f08005e
- 22. 的Android资源ID
- 23. Android资源管理
- 24. Intellij android资源gen
- 25. MYSQL资源查询
- 26. 如何从资源
- 27. 从nl.siegmann.epublib获取资源的位图资源加载资源
- 28. 检查返回值的资源是空
- 29. 蚂蚁资源存在检查
- 30. 检查访问哪些帐户资源
我也这么认为。谢谢。 – Mudassir 2010-12-13 08:45:54
可以理解,这可能没有办法,但如果你不能提供替代方案,那么这不应该是一个答案。 – Gowiem 2012-06-06 16:30:17