¿Cómo puedo contar el número de archivos con una extensión específica en Android?
En la aplicación que estoy desarrollando para Android, permito que los usuarios creen archivos específicos para mi aplicación con la extensión ".rbc". Hasta ahora he tenido éxito en la creación, escritura y lectura de estos archivos.
En este momento estoy tratando de contar el número de estos archivos que existe. No estoy muy familiarizado con Java y estoy empezando a programar para Android, así que me siento un poco perdido. Todos mis intentos hasta ahora en hacer esto no han podido localizar cualquier archivo con mi extensión.
- Java genéricos vacíos
- Cómo cambiar el origen de ImageView en android
- Cómo iniciar la pantalla de inicio mediante programación en Android
- Android: Copiar RawFile a Sdcard (video mp4)
- Registrarse como reproductor de música y reproducir canciones
Así que, básicamente, tengo dos preguntas que necesito respuesta para que pueda averiguar esto:
¿Dónde está el directorio predeterminado en el que Android almacena los archivos creados por una aplicación?
¿Tienes algún ejemplo que puedas darme de contar archivos con una extensión específica en Android?
Muchas gracias de antemano por su tiempo.
- KeyPairGeneratorSpec reemplazo con los equivalentes de KeyGenParameterSpec.Builder - falló la operación del almacén de claves
- Emulador de estudio de Android falla al iniciar con mensaje de error de límite de memoria relacionado
- ¿Cómo depurar un complemento de Gradle?
- Lectura de código QR con cámara - Android
- ¿Barras de acción en la parte inferior?
- ¿Cómo obtener registros de otras aplicaciones?
- HttpURLConnection de Android y URL con caracteres especiales
- Animación de agitación de botón de Android
Algunas pruebas me mostraron que el directorio predeterminado donde Android almacena los archivos creados por una aplicación utilizando Context.getFilesDir()
es /data/data/<your_package_name>/files
Para contar los archivos en cualquier directorio se utiliza File.listFiles(FileFilter)
sobre el directorio raíz. Su FileFilter debería ser algo así (para filtrar archivos ".rbc"):
public static class RBCFileFilter implements FileFilter { @Override public boolean accept(File pathname) { String suffix = ".rbc"; if( pathname.getName().toLowerCase().endsWith(suffix) ) { return true; } return false; } }
Si usted tiene algún tipo de estructura de directorio que necesita buscar recursivamente, entonces tendrá que File.listFiles(FileFilter)
en toda la estructura de directorios. Y debe ser algo como:
public static List<File> listFiles(File rootDir, FileFilter filter, boolean recursive) { List<File> result = new ArrayList<File>(); if( !rootDir.exists() || !rootDir.isDirectory() ) return result; //Add all files that comply with the given filter File[] files = rootDir.listFiles(filter); for( File f : files) { if( !result.contains(f) ) result.add(f); } //Recurse through all available dirs if we are scanning recursively if( recursive ) { File[] dirs = rootDir.listFiles(new DirFilter()); for( File f : dirs ) { if( f.canRead() ) { result.addAll(listFiles(f, filter, recursive)); } } } return result; }
Y donde DirFilter
implementaría FileFilter
esta manera:
public static class DirFilter implements FileFilter { @Override public boolean accept(File pathname) { if( pathname.isDirectory() ) return true; return false; } }
Android normalmente almacena los archivos creados por una aplicación en data / data / nombre_paquete_de_launching_Activity y allí encontrarás algunas carpetas donde se pueden almacenar archivos. Puede obtener un directorio de caché dentro de esa ruta llamando a getCacheDir ().
Una estrategia rápida para contar extensiones específicas podría ser la siguiente:
Si tiene una carpeta, diga File folder = new File(folderPath)
donde folderPath es la ruta absoluta a una carpeta. Podría hacer lo siguiente:
String[] fileNames = folder.list(); int total = 0; for (int i = 0; i< filenames.length; i++) { if (filenames[i].contains(".rbc")) { total++; } }
Esto puede darle un recuento de los archivos totales con ".rbc" como la extensión. Aunque esto puede no ser la manera mejor / eficiente de hacerlo, todavía funciona.
Para contar archivos, puede probar este código:
# public static List getFiles(File aStartingDir) # { # List result = new ArrayList(); # # File[] filesAndDirs = aStartingDir.listFiles(); # List filesDirs = Arrays.asList(filesAndDirs); # Iterator filesIter = filesDirs.iterator(); # File file = null; # while ( filesIter.hasNext() ) { # file = (File)filesIter.next(); # result.add(file); //always add, even if directory # if (!file.isFile()) { # //must be a directory # //recursive call! # List deeperList = getFileListing(file); # result.addAll(deeperList); # } # # } # Collections.sort(result); # return result; # }
Puede utilizar el parámetro fileFilter para el método listFiles () para devolver los archivos con la extensión .rbc.
EDIT: Lo siento, se ha perdido una pregunta. Los archivos se colocarán en su paquete de aplicación que estará allí en datos / datos. Puede verlos en el Explorador de archivos de Eclipse con el modo DDMS.