¿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.

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.

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.

  • La reproducción de una canción tras otra provoca un error en MP3Extractor
  • Error: "El proceso de daemon recién creado tiene un contexto diferente del esperado"
  • Cancelación de la conexión Http en android
  • No se puede instalar Android Studio en Ubuntu
  • Código de ejemplo de Android ToneGenerator
  • Android WebView: muestra sólo una parte del sitio web
  • Error de Android aleatoriamente java.lang.NoClassDefFoundError: com.facebook.internal.Utility
  • Aplicaciones de las aplicaciones recientes volver a lanzador de acciones en lugar de lanzador personalizado
  • MediaStore.EXTRA_OUTPUT hace que los datos sean nulos, otra forma de guardar fotos?
  • Javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Ancla de confianza para la ruta de certificación no encontrada
  • ¿Necesito mi propio servidor para usar el Stripe API?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.