2016-11-02 7 views
1

assetsという名前のフォルダにs1という名前のフォルダがあります。そこには約100のテキストファイルがあります。私はそのフォルダにいくつのテキストファイルがあるのか​​を数えたいと思う。アセットサブフォルダ内のファイル数をカウントする

このエラーで起動時にアプリケーションがクラッシュ: `ここ

Caused by: java.lang.NullPointerException: Attempt to get length of null array 

MainActivityのコードです:

Integer fileCount = 0; 
    fileCount = Integer.valueOf(new File("./assets/s1/").listFiles().length); 


    for(int i=0;i<fileCount;i++) { 

     Button btn = new Button(this); 
     btn.setId(i+1); 
     btn.setText("button "+(i+1)); 
     btn.setLayoutParams(lprams); 
     final int index = i; 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Log.i("TAG", "The index is" + index); 
      } 
     }); 
     dynamicview.addView(btn); 
    } 

それを解決する方法は?あなたはこのような資産にアクセスする必要が

+0

デバッグを試みましたか?たとえば、2行目のメソッド呼び出しを別々にして、 'new File(" .. ")'の値が何であるかを見てから、 '.listFiles()'の値などを調べます。 –

+0

アセット内のファイルに対してFileクラスを使用することはできません。そして、使用されたパスも間違っています。アセットからファイルを読み込む方法については、Googleの方が優れています。またはリストする方法。 – greenapps

答えて

0

fileCount = getResources().getAssets().list("s1").length; 

getResources()は、アプリのResourcesインスタンスを返します。 getAssets()を呼び出すとが返されます。アセット内のファイルはファイルシステムに存在しないため、通常のファイルのように開いたり読み取ったりすることはできません。

0

使用getAssets().open(path); サブセットがない場合は、資産階層内のフォルダー名またはファイル名から開始します。

関連する問題