2011-11-13 16 views
5

Necesito mover un archivo de un directorio a otro en el sistema de archivos de Android. ¿Cómo puedo verificar programáticamente si las dos rutas están en el mismo punto de montaje?¿Cómo comprobar si dos rutas están en el mismo punto de montaje?

La razón por la que quiero saber esto es porque si lo están, tenemos que copiar los bits en lugar de usar File.rename(newPath).

Ejemplos cuando los caminos está en diferentes puntos de montaje:

  • el usuario desea mover un archivo desde el interior para almacenamiento externo.

  • El usuario desea mover un archivo de/sdcard/files a/sdcard/external_sd/files en un dispositivo samsung.

Respuesta

2

Una forma de determinar qué sistema de archivos un archivo reside en desde dentro de una aplicación para Android:

  • obtener la ruta canónica del archivo llamando File.getCanonicalPath() sobre ella.

  • a continuación, obtener la lista de sistemas de archivos montados actualmente & sus caminos de puntos de montaje de/proc/mounts

  • y se encontró que montan ruta punto es la combinación de cadena más completa para la ruta canónica del archivo en cuestión, esto debería darle el punto de montaje/sistema de archivos del archivo.

Compara los resultados de los dos archivos.

5

Llame File.rename. Si tiene éxito, están en el mismo punto de montaje.

+2

Es una forma de hacerlo. Pero si falla, puede ser por otros motivos que no sean diferentes puntos de montaje. –

+2

Dudo que importe. Por el motivo que sea, es muy probable que quiera hacer lo mismo: intente hacer la copia usted mismo e informe el error solo si eso falla. –

Cuestiones relacionadas