Wie listet man alle Dateien und Ordner auf der sd-Karte auf

Ich habe ein Programm gemacht, das alle Dateien und Ordner (f & f) auf der SD-Karte auflistet. Wenn ich eines der Listenelemente berichte (wenn es sich um einen Ordner handelt), dann zeigt die Liste faf, die sich in diesem Ordner befindet.

Hier ist der Quellcode

  • Warum schließt sich mein Vollbild-Webview sofort nach dem Öffnen ab?
  • TagSoup vs Jsoup vs. HTML Parser vs. HotSax vs
  • Ändern der Hintergrundfarbe von ListView-Elementen auf Android
  • Android JSon-Fehler "Erwartete BEGIN_OBJECT aber war BEGIN_ARRAY an Zeile 1 Spalte 2"
  • Wie bekomme ich die Latitude und Longitude auf der Karte in Android?
  • Gibt es ein Android-GCM, das dem iOS Push Notification Feedback Service entspricht?
  • public class FileList extends ListActivity { private File file; private List<String> myList; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myList = new ArrayList<String>(); String root_sd = Environment.getExternalStorageDirectory().toString(); file = new File( root_sd + "/external_sd" ) ; File list[] = file.listFiles(); for( int i=0; i< list.length; i++) { myList.add( list[i].getName() ); } setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myList )); } protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); File temp_file = new File( file, myList.get( position ) ); if( !temp_file.isFile()) { file = new File( file, myList.get( position )); File list[] = file.listFiles(); myList.clear(); for( int i=0; i< list.length; i++) { myList.add( list[i].getName() ); } Toast.makeText(getApplicationContext(), file.toString(), Toast.LENGTH_LONG).show(); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myList )); } } @Override public boolean dispatchKeyEvent(KeyEvent event) { if( KeyEvent.KEYCODE_BACK == event.getKeyCode()) { String parent = file.getParent().toString(); file = new File( parent ) ; File list[] = file.listFiles(); myList.clear(); for( int i=0; i< list.length; i++) { myList.add( list[i].getName() ); } Toast.makeText(getApplicationContext(), parent, Toast.LENGTH_LONG).show(); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myList )); } return true; } } 

    Jetzt habe ich zwei Fragen

    1. Wenn ich die "Back" -Taste berühre, dann listet sie zwei Schritte zurück. Sagen Sie derzeit die Liste zeigt die f & f unter "external_sd / Video / Bangla". Nach dem Zurückkehren erscheint die Liste nicht unter "external_sd / Video /", sondern unter "external_sd /".

    2. Gibt es eine bessere Lösung, um alle F & F wie JFileChooser in Java zu zeigen?

  • Android-Popup-Menü
  • Absicht, eine vorher pausierte Aktivität wieder aufzunehmen (von einer Benachrichtigung aufgerufen)
  • Android erkennt Telefonschloss-Ereignis
  • Tab-Inhalt bleibt sichtbar nach dem Ändern der Registerkarte nach der Orientierungsänderung
  • Wird ein dicht qualifizierter ziehbarer Ordner oder Drawable-nodpi Vorrang haben?
  • Jquerymobile's Tap-Hold funktioniert nicht im Opern-Mobile-Widget-Emulator
  • 6 Solutions collect form web for “Wie listet man alle Dateien und Ordner auf der sd-Karte auf”

    Es scheint, dass, wenn Sie berühren Back dispatchKeyEvent () erhalten zweimal die KeyEvent KEYCODE_BACK, also schlage ich vor, Sie tun es so:

     public class FileList extends ListActivity { private File file; private List<String> myList; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myList = new ArrayList<String>(); String root_sd = Environment.getExternalStorageDirectory().toString(); file = new File( root_sd + "/external_sd" ) ; File list[] = file.listFiles(); for( int i=0; i< list.length; i++) { myList.add( list[i].getName() ); } setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myList )); } protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); File temp_file = new File( file, myList.get( position ) ); if( !temp_file.isFile()) { file = new File( file, myList.get( position )); File list[] = file.listFiles(); myList.clear(); for( int i=0; i< list.length; i++) { myList.add( list[i].getName() ); } Toast.makeText(getApplicationContext(), file.toString(), Toast.LENGTH_LONG).show(); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myList )); } } @Override public void onBackPressed() { String parent = file.getParent().toString(); file = new File( parent ) ; File list[] = file.listFiles(); myList.clear(); for( int i=0; i< list.length; i++) { myList.add( list[i].getName() ); } Toast.makeText(getApplicationContext(), parent, Toast.LENGTH_LONG).show(); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myList )); } 

    Um alle Dateien und Ordner des externen Speichers aufzulisten , ist es besser, wenn Sie getExternalStorageDirectory () verwenden :

     final String state = Environment.getExternalStorageState(); if ( Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state) ) { // we can read the External Storage... getAllFilesOfDir(Environment.getExternalStorageDirectory()); } 

    Wo die getAllFilesOfDir () ist die rekursive Methode:

     private void getAllFilesOfDir(File directory) { Log.d(TAG, "Directory: " + directory.getAbsolutePath() + "\n"); final File[] files = directory.listFiles(); if ( files != null ) { for ( File file : files ) { if ( file != null ) { if ( file.isDirectory() ) { // it is a folder... getAllFilesOfDir(file); } else { // it is a file... Log.d(TAG, "File: " + file.getAbsolutePath() + "\n"); } } } } } 
     import java.io.*; import java.util.*; public class DirUtils { public static List recurseDir(String dir) { String result, _result[]; result = recurseInDirFrom(dir); _result = result.split("\\|"); return Arrays.asList(_result); } private static String recurseInDirFrom(String dirItem) { File file; String result,list[]; result = dirItem; file = new File(dirItem); if (file.isDirectory()) { list = file.list(); File[] fileslist = file.listFiles(new MyDocFileFilter()); if (fileslist != null) { for (File file1: fileslist) { System.out.println(file1.getAbsolutePath()); } } else { System.out.println("No Subdirectory Found."); } for (int i = 0; i < list.length; i++) result = result + "\n" + recurseInDirFrom(dirItem + File.separatorChar + list[i]); } return result; } static class MyDocFileFilter implements FileFilter { private final String[] myDocumentExtensions = new String[] {".java", ".png", ".html", "class"}; public boolean accept(File file) { if (!file.isFile()) return false; for (String extension : myDocumentExtensions) { if (file.getName().toLowerCase().endsWith(extension)) return true; } return false; } } public static void main(String arg[]) { DirUtils.recurseDir("your path "); } } 
     ArrayList<File> fileList = new ArrayList<File>(); public ArrayList<File> getfile(File dir,String fileType)//pass fileType as a music , video, etc. { File listFile[] = dir.listFiles(); if (listFile != null && listFile.length > 0) { for (int i = 0; i < listFile.length; i++) { if (listFile[i].isDirectory()) { getfile(listFile[i],fileType); } else { if("doc".equals(fileType)) { if(listFile[i].getName().endsWith(".pdf") || listFile[i].getName().endsWith(".txt") || listFile[i].getName().endsWith(".xml") || listFile[i].getName().endsWith(".doc") || listFile[i].getName().endsWith(".xls") || listFile[i].getName().endsWith(".xlsx")) { fileList.add(listFile[i]); } } else if("music".equals(fileType)) { if(listFile[i].getName().endsWith(".mp3")) { fileList.add(listFile[i]); } } else if("video".equals(fileType)) { if(listFile[i].getName().endsWith(".mp4")) { fileList.add(listFile[i]); } } else if("image".equals(fileType)) { 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; } 

    Hierbei handelt es sich um txt-Dateien:

      public class TXTList extends Activity { ArrayList<File> allTXT = new ArrayList<File>(); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.list_item); searchTXTs(new File(Environment.getExternalStorageDirectory().getPath())); } private void searchTXT(File dir){ File[] files = dir.listFiles(); // Log.i("DIR", "Found " + files.length + " in " + dir.getAbsolutePath()); for (File file : files) { if(file.isFile() && isTXT(file)){ allTXT.add(file); Log.i("TXT", file.getName()); }else if(file.isDirectory()){ searchTXT(file.getAbsoluteFile()); } } } private boolean isTXT(File file){ boolean is = false; if(file.getName().endsWith(".txt")){ is = true; } return is; } } 

    Ein einfaches Beispiel

      File Lis=new File("FolderPatch"); Lis.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String filename) { Log.e(">>>>", filename+"<<<"); return false; } }); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.