web-dev-qa-db-ja.com

アセットディレクトリからファイルを読み取るとFileNotFoundExceptionがスローされる

私が書いているワードゲームに使用したい単語の束のテキストファイルを読み込もうとしています。このリストはアセットディレクトリに保存され、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)

みんな、ありがとう!

18
strange quark

ファイルが.apkファイル内のassetsフォルダーに正しくパッケージ化されているかどうかを確認します。 (Zipファイルとして参照できます。必要に応じて名前を変更して内部を確認してください。)

19
Ted Hopp

mavenでは、Assetsフォルダーは他の例で提案されているようにprojectName/src/main内ではなくprojectName /内にある必要があります。

ソース:

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

2
jonney