2016-10-17 140 views
0

我試圖從外部存儲中檢索所有文件名以及擴展名到我的應用程序。已經我試過,但它顯示文件大小= 0" ,而我調試,但同時它顯示同樣的文件名,請試着給我建議。獲取帶有擴展名的目錄中的文件列表

private File root; 
private ArrayList<File> fileList = new ArrayList<File>(); 
private LinearLayout view; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    view = (LinearLayout) findViewById(R.id.view); 

    //getting SDcard root path 
    root = new File(Environment.getExternalStorageDirectory() 
      .getAbsolutePath()); 
    getfile(root); 

    for (int i = 0; i < fileList.size(); i++) { 
     TextView textView = new TextView(this); 
     textView.setText(fileList.get(i).getName()); 
     textView.setPadding(5, 5, 5, 5); 

     System.out.println(fileList.get(i).getName()); 

     if (fileList.get(i).isDirectory()) { 
      textView.setTextColor(Color.parseColor("#FF0000")); 
     } 
     view.addView(textView); 
    } 

} 

public ArrayList<File> getfile(File dir) { 
    File listFile[] = dir.listFiles(); 
    if (listFile != null && listFile.length > 0) { 
     for (int i = 0; i < listFile.length; i++) { 

      if (listFile[i].isDirectory()) { 
       fileList.add(listFile[i]); 
       getfile(listFile[i]); 

      } else { 
       if (listFile[i].getName().endsWith(".png") 
         || listFile[i].getName().endsWith(".jpg") 
         || listFile[i].getName().endsWith(".jpeg") 
         || listFile[i].getName().endsWith(".gif")) 

       { 
        fileList.add(listFile[i]); 
       } 
      } 

     } 
    } 
    return fileList; 
} 

}

+0

此代碼工作好的,我在模擬器上用API 23測試了它。檢查你是否已經請求了READ_EXTERNAL_STORAGE權限。 –

回答

0

您要添加的(目錄在你的GetFiles文件列表)方法。因此,它顯示文件的大小爲0 做一個小的變化,只是刪除fileList.add(listFile[i]);從您的GetFiles()方法。希望這會工作。

+0

謝謝它的工作,但無法打開該列表中的子文件夾 – Mounika

相關問題