代码之家  ›  专栏  ›  技术社区  ›  Mudassir

如何检查Android资产资源?

  •  10
  • Mudassir  · 技术社区  · 14 年前

    我想检查一个文件是否存在于/资产/文件夹中。 我该怎么做?请帮忙。

    4 回复  |  直到 12 年前
        1
  •  4
  •   Chromium    14 年前

    你必须自己检查。我知道,这项工作没有办法。

        2
  •  13
  •   Vlad    8 年前

    我在一个应用程序类中添加了一个helper方法。我想是的;

    1. 应用程序运行时,资产列表不会更改。
    2. 这个 List<String> 不是一个内存猪(在我的应用程序中只有78个资产)。
    3. 检查列表中的存在()比试图打开文件和处理异常更快(实际上我还没有对此进行过剖析)。
    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);
    }
    
        3
  •  9
  •   Moss    13 年前

    您也可以尝试打开流,如果流失败,则文件不存在,如果流不失败,则文件应存在:

    /**
     * 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;
    }
    
        4
  •  4
  •   Hrk    14 年前