android - samsung - Lista todos los archivos de toda la carpeta en una sola lista
ocultar imagenes galeria android (3)
He modificado la solución de Vyacheslav porque solo necesitaba nombres de archivos dentro del directorio. Tal vez sea de ayuda para alguien.
...
List<String> files = getList(new File("YOUR ROOT"));
...
private List<String> getList(File parentDir, String pathToParentDir) {
ArrayList<String> inFiles = new ArrayList<String>();
String[] fileNames = parentDir.list();
for (String fileName : fileNames) {
if (fileName.toLowerCase().endsWith(".txt") || fileName.toLowerCase().endsWith(".rtf") || fileName.toLowerCase().endsWith(".txd")) {
inFiles.add(pathToParentDir + fileName);
} else {
File file = new File(parentDir.getPath() + "/" + fileName);
if (file.isDirectory()) {
inFiles.addAll(getList(file, pathToParentDir + fileName + "/"));
}
}
}
return inFiles;
}
Hola, estoy buscando la solución para listar todos los archivos del dispositivo raíz / dispositivo Android.
Supongamos que hay 3 carpetas dentro del directorio raíz, pero quiero mostrar todos los archivos en todas estas carpetas en una sola lista ...
Ahora si estoy usando
File f=new File("/sdcard");
Luego listará todos los archivos de la carpeta sdcard solo ... y si usaré
File f=new File("/download");
Luego listará todos los archivos de la carpeta de descarga solo ... y si los usaré
File f=new File("/");
A continuación, se enumerarán solo los archivos de directorio raíz ... no los archivos dentro de / sdcard o / download ..
Entonces, ¿qué pasos debo seguir para enumerar todos los archivos con un filtro para enumerar solo archivos .csv de todas las carpetas dentro de la raíz?
Gracias..
Prueba esto:
.....
List<File> files = getListFiles(new File("YOUR ROOT"));
....
private List<File> getListFiles(File parentDir) {
ArrayList<File> inFiles = new ArrayList<File>();
File[] files = parentDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
inFiles.addAll(getListFiles(file));
} else {
if(file.getName().endsWith(".csv")){
inFiles.add(file);
}
}
}
return inFiles;
}
o variante sin recursión:
private List<File> getListFiles2(File parentDir) {
List<File> inFiles = new ArrayList<>();
Queue<File> files = new LinkedList<>();
files.addAll(Arrays.asList(parentDir.listFiles()));
while (!files.isEmpty()) {
File file = files.remove();
if (file.isDirectory()) {
files.addAll(Arrays.asList(file.listFiles()));
} else if (file.getName().endsWith(".csv")) {
inFiles.add(file);
}
}
return inFiles;
}
Puedes usar el siguiente método,
private int readLogList( String filePath )
{
File directory = Environment.getExternalStorageDirectory();
File folder = new File( directory + ConstantCodes.FILE_SEPARATOR + filePath );
if ( !folder.exists() )
{
return 0;
}
return folder.list().length;
}