2016-05-14 5 views
1

私はこのトピックがおそらく前にカバーされていたと知っていますが、私の問題に対する答えは見つけられません。
私は読んでおく必要があるいくつかの単語を含むファイルを持っています。
デスクトップ版では正常に動作しますが、エミュレータで実行しようとするとjava.io.FileNotFoundException - no file foundと表示されます。
ファイルをデスクトップとは別の方法で読み込む必要があることを理解しています。プレーンテキストファイルを読む

ご協力いただければ幸いです。

ここにファイルを読むためのコードがあります。

String line; 

     try { 

      BufferedReader br = new BufferedReader(new FileReader("words.txt")); 
      if (!br.ready()) { 
       throw new IOException(); 
      } 
      while ((line = br.readLine()) != null) { 
       words.add(line); 
      } 
      br.close(); 
     } catch (IOException e) { 
      System.out.println(e); 
     } 

でも、Androidでは動作しません。

まだ解決されていません!

+0

を "それは、Android上で動作しません!!"これは、 'words.txt'が無効なパスであるためです。このファイルはどこですか? – CommonsWare

+0

は私のassestsフォルダに..私はまた、 "assests/words.txt" と "/assests/words.txt" – Joe

+0

http://stackoverflow.com/questions/4081763/access-resource-files-in-android –

答えて

1

あなたはアンドロイドのコンテキストからファイルに到達することができます。

Context Context; 
AssetManager mngr = context.getAssets(); 
String line; 
     try { 

      BufferedReader br = new BufferedReader(new FileReader(mngr.open("words.txt"))); 
      if (!br.ready()) { 
       throw new IOException(); 
      } 
      while ((line = br.readLine()) != null) { 
       words.add(line); 
      } 
      br.close(); 
     } catch (IOException e) { 
      System.out.println(e); 
     } 

またはこの試してみてください。

String line; 
     try { 

      BufferedReader br = new BufferedReader(new FileReader(getApplicationContext().getAssets().open("words.txt"))); 
      if (!br.ready()) { 
       throw new IOException(); 
      } 
      while ((line = br.readLine()) != null) { 
       words.add(line); 
      } 
      br.close(); 
     } catch (IOException e) { 
      System.out.println(e); 
     } 
+0

コンテキストを試してみました=記号を解決できませんか?私はまた、正しいディレクトリにあなたの資産フォルダを確認し、間違った – Joe

+0

を何をやっている: 'アプリ/ srcに/メイン/資産/' – user6158055

+0

彼らはすべて私を与える同じ事がシンボルを解決することはできません... – Joe

1

アセットは開発マシンのファイルです。それらはデバイス上のファイルではありません。資産にInputStreamを取得するには

use open() on an AssetManager。あなたのActivityService、または他のContextgetAssets()を呼び出すことによってAssetManagerを得ることができます。

関連する問題