2016-11-02 50 views
1

我在assets文件夾中有一個文件夾,名稱爲s1。其中大約有一百個文本文件。我想要統計該文件夾中有多少文本文件。計算資產子文件夾中的文件

應用程序崩潰,在這種錯誤啓動:`

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

您是否嘗試過調試?例如,單獨調用第二行的方法,看看'new File(「..」)'的值是什麼,然後是'.listFiles()'的值等等。 –

+0

您無法將文件類用於資產中的文件。而且使用的路徑也是錯誤的。你最好谷歌如何從資產中讀取文件。或者如何列出它們。 – greenapps

回答

0

您需要訪問的資產是這樣的:

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

getResources()返回Resources實例爲您的應用程序。撥打getAssets()即可返回AssetManager。資產中的文件不存在於文件系統中,因此您無法打開並像普通文件一樣讀取它們。

0

使用getAssets().open(path); 如果沒有子文件夾,則從資產層次結構或文件名中的文件夾名稱開始。