Tengo un problema con millis y leo en Android 2.3.4 en un Nexus One. Este es el código:file.lastModified() nunca es lo que se configuró con file.setLastModified()
File fileFolder = new File(Environment.getExternalStorageDirectory(), appName + "/"
+ URLDecoder.decode(folder.getUrl()));
if (fileFolder != null && !fileFolder.exists()) {
fileFolder.setLastModified(1310198774);
fileFolder.mkdirs();
fileFolder.setLastModified(1310198774);
}
if (fileFolder != null && fileFolder.exists()) {
long l = fileFolder.lastModified();
}
En este pequeño test que escribo 1310198774 pero el resultado que se devuelve desde lastModified() es 1310199771000.
Incluso si corto el trailing "000" hay una diferencia de varios minutos.
Necesito sincronizar archivos entre un servicio web y el dispositivo Android. Los últimos millis de modificación son parte de los datos enviados por este servicio. Sí configuro los milis a los archivos/carpetas creados/copiados para verificar si el archivo/carpeta necesita sobrescribirse.
Todo funciona, PERO los millis que se devuelven del sistema de archivos son diferentes de los valores que se establecieron.
Estoy bastante seguro de que hay algún problema con mi código, pero no puedo encontrarlo.
Muchas gracias de antemano. HJW
Consulte http://code.google.com/p/android/issues/detail?id=1699 y http://code.google.com/p/android/issues/detail?id=1992 –
Gracias por tu rápido comentario. ¿Esto significa que nadie puede crear una función de sincronización basada en la marca de tiempo en tarjetas SD en dispositivos Android? Parece que necesito usar una base de datos para eso ... –
No almacenando la última fecha de modificación como un atributo de archivo. –