15

Próbuję przeczytać w pliku tekstowym kilka słów, które chcę użyć w grze słownych, które piszę. Ta lista jest przechowywana w katalogu assets i jest plikiem txt. Ale za każdym razem, gdy spróbuję go otworzyć, zgłasza wyjątek.Czytanie pliku z katalogu zasobów wyrzuca FileNotFoundException

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 
} 

Oto dziennik błędów, w przypadku, gdy jakakolwiek pomoc:

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) 

Dzięki wszystkim!

Odpowiedz

19

Sprawdź, czy plik został poprawnie spakowany w folderze zasobów w pliku .apk. (Może być przeglądane w postaci pliku zip. Zmień nazwę, jeśli to konieczne, aby zajrzeć do środka.)

+0

Co ciekawe, plik był tam, kiedy zrobił wywozu z Eclipse, ale kiedy wyciągnął plik z mojego telefonu (z data/app), cały katalog aktywa był MIA. Jak mogę to zrobić, aby utworzyć ten katalog? –

+17

Gotowy! Musiałem kliknąć prawym przyciskiem myszy na katalogu aktywów w Eclipse, a następnie wybrać Build Path -> Use as Source folder. Teraz Eclipse buduje go, gdy pakuje pakiet APK. To była dobra sugestia. Dzięki! –

+0

Właściwie zrobiłem ten "wielki komentarz" tylko trochę za szybko ... Jeśli zaznaczyłem "zasoby" jako folder źródłowy, nie działało - plik nie został znaleziony. Jeśli po prostu pozwoliłem, żeby to było (standard), działało dobrze =) – Ted