【问题标题】:Android: Neither res/raw files nor assets can be loadedAndroid:既不能加载 res/raw 文件也不能加载资产
【发布时间】:2013-03-05 13:33:15
【问题描述】:

我尝试在 android 中加载 .ini 文件,但它不起作用。到目前为止,我已经尝试了以下两种方法:

从 res/raw 文件夹加载文件:

int fileId = context.getResources().getIdentifier(fileName, "raw", context.getPackageName());
bufferedReader = new BufferedReader(new InputStreamReader(Resources.getSystem().openRawResource(fileId)));

// I tried this too:
//context.getResources().openRawResource(fileId)));

我首先认为上下文可能是问题,但 getIdentifier() 方法返回正确的 R.raw id,并且在 openRawResource() 处 logcat 总是显示:

03-17 00:17:41.627: W/ResourceType(28752): No known package when getting value for resource number 0x7f040000
03-17 00:17:41.627: W/System.err(28752): android.content.res.Resources$NotFoundException: Resource ID #0x7f040000

当我尝试从 /assets 目录加载文件时:

AssetManager assetManager = context.getAssets();
bufferedReader = new BufferedReader(new InputStreamReader(assetManager.open(fileName)));

...我总是收到 FileNotFoundException:

03-17 00:33:32.006: W/System.err(30447): java.io.FileNotFoundException: /file.ini: open failed: ENOENT (No such file or directory)

我希望有人可以帮助我解决这个问题,我只是不知道在哪里寻找。我也在网上搜索了类似的问题,但没有解决方法。

【问题讨论】:

    标签: android file assets


    【解决方案1】:

    如果fileNamefile.ini,那么您的getIdentifier() 调用将失败,因为资源名称不包含文件扩展名。使用file(或者,更好的是,完全摆脱getIdentifier() 并使用R.raw.file)。

    关于第二种方法,您的项目目录需要是assets/,而不是asset/

    【讨论】:

    • getIdentifier() 从 R.java 文件中返回正确的值(我仅将文件扩展名用于资产变体)。
    • 感谢 /assets 的提示(我发帖时打错了),但这似乎不是问题。尽管 R.java 中提到了该文件,但该应用程序找不到该文件。不幸的是,使用 R.raw.file 没有帮助。
    【解决方案2】:

    非常仔细地检查您的文件名:

    1) 确保它们都是小写的,并且在您的编码中如此定义 2) 确保 yoru 文件类型正确(例如,引用为 .TTF 的 .OTF 会导致此问题) 3)确保您的文件路由正确。例如r.id.whatever

    玩得开心:)

    【讨论】:

    • 文件名是小写的,在 res/raw 文件夹中。即使我跳过 getIdentifier 方法而只使用 R.raw.file 我也会像使用 /assets 方法一样得到 FileNotFoundException。
    【解决方案3】:

    好的,现在我发现了错误。 我在上面发布的代码正在运行,但在此之后我的程序立即调用了一个导致 FileNotFoundException 的方法(它不应该做的事情)。因此,我总是查看代码的错误部分。 现在我使用从 /assets 目录打开文件的方法,它的工作原理应该是这样。 不过,感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      相关资源
      最近更新 更多