【问题标题】:Reading file from assets directory throws FileNotFoundException从资产目录读取文件抛出 FileNotFoundException
【发布时间】:2011-07-02 11:22:37
【问题描述】:

我正在尝试读取一个包含一堆单词的文本文件,这些单词要用于我正在编写的文字游戏。此列表存储在 assets 目录中,是一个 txt 文件。但是,每当我尝试打开它时,它都会引发异常。

List<String>wordList = new ArrayList<String>();
    BufferedReader br = null;
    try {
        br = new BufferedReader(new InputStreamReader(getAssets().open("wordlist.txt"))); //throwing a FileNotFoundException?
        String word;
        while((word=br.readLine()) != null)
        wordList.add(word); //break txt file into different words, add to wordList
    }
        catch(IOException e) {
            e.printStackTrace();
        }
        finally {
            try {
                br.close(); //stop reading
            }
            catch(IOException ex) {
                ex.printStackTrace();
            }
        }
        String[]words = new String[wordList.size()];
        wordList.toArray(words); //make array of wordList

        for(int i=0;i<words.length; i++)
            Log.i("Brian", words[i]); //print out words in array
}

这是错误日志,以防万一:

02-22 20:49:47.646: WARN/System.err(2351): java.io.FileNotFoundException: wordlist.txt
02-22 20:49:47.646: WARN/System.err(2351):     at android.content.res.AssetManager.openAsset(Native Method)
02-22 20:49:47.746: WARN/System.err(2351):     at android.content.res.AssetManager.open(AssetManager.java:299)
02-22 20:49:47.746: WARN/System.err(2351):     at android.content.res.AssetManager.open(AssetManager.java:273)
02-22 20:49:47.756: WARN/System.err(2351):     at com.bic.anagram.GameActivity.onCreate(GameActivity.java:40)
02-22 20:49:47.756: WARN/System.err(2351):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-22 20:49:47.756: WARN/System.err(2351):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521)
02-22 20:49:47.756: WARN/System.err(2351):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2574)
02-22 20:49:47.766: WARN/System.err(2351):     at android.app.ActivityThread.access$2400(ActivityThread.java:121)
02-22 20:49:47.766: WARN/System.err(2351):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1925)
02-22 20:49:47.766: WARN/System.err(2351):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-22 20:49:47.776: WARN/System.err(2351):     at android.os.Looper.loop(Looper.java:136)
02-22 20:49:47.776: WARN/System.err(2351):     at android.app.ActivityThread.main(ActivityThread.java:4425)
02-22 20:49:47.776: WARN/System.err(2351):     at java.lang.reflect.Method.invokeNative(Native Method)
02-22 20:49:47.776: WARN/System.err(2351):     at java.lang.reflect.Method.invoke(Method.java:521)
02-22 20:49:47.776: WARN/System.err(2351):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
02-22 20:49:47.776: WARN/System.err(2351):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
02-22 20:49:47.776: WARN/System.err(2351):     at dalvik.system.NativeStart.main(Native Method)
02-22 20:49:47.776: WARN/dalvikvm(2351): threadid=3: thread exiting with uncaught exception (group=0x4001e280)

谢谢大家!

【问题讨论】:

    标签: android bufferedreader filenotfoundexception android-assets


    【解决方案1】:

    在 Maven 上,Assets 文件夹需要位于 projectName/ 内,而不是像其他示例中所建议的那样位于 projectName/src/main 内。

    来源:

    http://jayway.github.io/maven-android-plugin/generate-sources-mojo.html

    【讨论】:

      【解决方案2】:

      检查文件是否正确打包在 .apk 文件内的 assets 文件夹中。 (可以以 zip 文件的形式浏览。如有必要,请重命名。)

      【讨论】:

      • 有趣的是,当我从 Eclipse 导出文件时,该文件就在那里,但是当我从手机(从数据/应用程序)中取出文件时,整个资产目录是 MIA。我如何获得它来创建该目录?
      • 知道了!我必须右键单击 Eclipse 中的资产目录,然后选择 Build Path -> Use as Source Folder。现在 Eclipse 在打包 apk 时构建它。那是个好建议。谢谢!
      • 实际上,我只是稍微快速地做出了“伟大的评论”标记......如果我将“资产”标记为源文件夹,它不起作用 - 找不到文件。如果我让它成为(标准),它工作得很好=)
      • @YogeshMaheshwari - 什么对你不起作用?也许如果您提出问题并发布代码,有人可以帮助您使其正常工作。
      • @TedHopp - 抱歉声明不完整。我确实尝试解压缩 .apk 并且资产文件夹在那里但仍然收到 FileNotFoundException,代码是一样的,我也尝试在源文件夹中添加资产文件夹甚至删除它的清洁项目,但似乎没有任何效果
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 2012-03-21
      • 1970-01-01
      • 2018-06-10
      相关资源
      最近更新 更多