2016-11-27 5 views
0

の中にres/rawの3つの.mp3ファイル、clip1.mp3clip2.mp3、およびclip3.mp3があります。Android - 生の中の.mp3の数。

私のサービスアプリケーションの中で、私はres/rawディレクトリにあるファイルの数を数えようとしています。

R.raw.class.getFields().length; // returns 5 instead of 3 

私はそれが0を返すかどうかをテストするために、ディレクトリからそれらのすべてを削除しようとすると、R.rawはもはや(私はフォルダを削除していないにもかかわらず、それだけが内容だ)シンボルとして認識されません。

フォルダ内の隠しファイル(Windows 10)を検索しましたが、存在しません。

上記の行が5を返す理由はありますか?または、具体的には.mp3ファイルの数だけをカウントする方法はありますか?それらは私がに興味がある唯一の拡張である

EDIT:

それは私がWindows10で見ることができないファイルがある判明します。私は、ディレクトリ内をループして、フォルダ内の資産のすべてをログに記録:

Field[] fields = R.raw.class.getFields(); 
      for (int count = 0; count < fields.length; count++) 
      { 
       Log.i("Raw Asset: ", fields[count].getName()); 
      } 

、この出力ました:

11-27 02:36:09.392 8363-8375/com.audioserver:remote I/Raw Asset:: $change 
11-27 02:36:09.392 8363-8375/com.audioserver:remote I/Raw Asset:: clip1 
11-27 02:36:09.392 8363-8375/com.audioserver:remote I/Raw Asset:: clip2 
11-27 02:36:09.392 8363-8375/com.audioserver:remote I/Raw Asset:: clip3 
11-27 02:36:09.392 8363-8375/com.audioserver:remote I/Raw Asset:: serialVersionUID 

私は戻り値から$changeserialVersionUIDを除外するにはどうすればよいですか?

答えて

0
Start in count=1 avoid $change & avoid serialVersionUID with an if 

    Field[] fields = R.raw.class.getFields(); 
      for (int count = 1; count < fields.length; count++) 
      { 
       if (!fields[count].getName().equals("serialVersionUID")) { 
       Log.i("Raw Asset: ", fields[count].getName()); 
       } 
      } 
+0

ようこそスタックオーバーフロー!サイトの[ツアー](// stackoverflow.com/tour)を自由に利用してください。サイトに関する追加のヘルプが必要な場合は、[this](// stackoverflow.com/help)をチェックしてください。ああ、ヘルプページではカバーできない問題に遭遇した場合は、[meta](// meta.stackoverflow.com/)でお気軽にお問い合わせください。 –

+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! –

関連する問題