2017-10-08 7 views
1

res/rawフォルダ内のファイルを開こうとした場合を除きます。Androidデベロッパー、RAWリソースが見つかりません

InputStream in = Resources.getSystem().openRawResource(R.raw.eng_sample); 

例外は次のとおりです。

android.content.res.Resources$NotFoundException: Resource ID #0X89890 

私はres/raw/eng_sample.txtでAPKファイルにeng_sample.txtを見ることができます。

R.raw.を入力してCtrl-spaceを押すと、ファイルeng_sampleが表示されます。

何が問題なのですか?これをどうやって解決するのですか?

ありがとうございます。

P.S.

また、ファイルeng_sample.txtmain/assetsに入れてみました。そして、ファイルを

InputStream in = context.getAssets().open("file:///android_asset/eng_sample.txt 

で取得しましたが、今ではIO例外が発生します。

誰かが、上記のアプローチではなく、このアプローチをどのようにするのか教えてもらえますか?

答えて

1

Resources.getSystem()は、システムリソース(アプリケーションリソースなし)のみにアクセスできる共有グローバルリソースオブジェクトを返します。

context.getAssets().open(fileName/*not path*/)は、assetsディレクトリからファイルを取得するために使用されます。パス全体ではなく、fileNameだけを指定する必要があります。

は使用し、RAWファイルからのストリームを開くには:私は、同じ目的のために、このコードを使用している

context.getResources().openRawResource(R.raw.eng_sample); 
1

。あなたはこのようなことをすることができます

BufferedReader mReader = null; 
try { 
     mReader = new BufferedReader(
    new InputStreamReader(getAssets().open("eng_sample.txt"))); 
String mLine; 
while ((mLine = mReader.readLine()) != null) { 
     //do your stuff with line 
     ... 
    } 
    } catch (IOException e) { 
    //print stack trace 
    } finally { 
    if (mReader != null) { 
      try { 
        mReader.close(); 
       } catch (IOException e) { 
       //print stack trace 
      } 
     } 
    } 

希望します。

関連する問題