android, how to get directory listing?

Viewed 55145

Just a quick question, how to I get a list of directories inside a specified directory.

for example,

String path = Environment.getExternalStorageDirectory().toString()+"/myApp/";

now I'd need to get the list of directories that are inside the "path" directory.

Thanks!

5 Answers

This example will dir list folder and add to list then display as toast. You need to add permission Read External File, if not, your app will crash when trying to dir "/sdcard".

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.TestDirFolder" >
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:resizeableActivity = "true">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity.java:

import android.app.*;
import android.os.*;
import android.widget.*;
import java.io.*;
import java.util.*;

public class MainActivity extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        sigL(DirFolder("/")+""); /// <<< HERE!!!
    sigL(DirFolder("/sdcard")+""); /// <<< HERE!!!
    }

    public static ArrayList<String> DirFolder(String path){
        ArrayList<String> ADir=new ArrayList<String>();  
        for (File inFile : new File(path).listFiles()) {
            if (inFile.isDirectory()) {
                ADir.add(""+inFile);
            }} return ADir;
    }

    public void sigL(String s){Toast.makeText(this , s, Toast.LENGTH_LONG).show();}

}
Related