¿Cómo utilizar FileLock en android?
Creo que somos capaces de bloquear los archivos de acceso exclusivo como vi este enlace: http://developer.android.com/reference/java/nio/channels/FileLock.html
Quiero crear una guardar / cargar un archivo tanto en un proceso de fondo (servicio) y la aplicación de primer plano real. Pueden tratar de acceder a este archivo al mismo tiempo, en ese caso uno debe esperar.
- Publicar el parámetro en el archivo PHP
- BitmapFactory: No se puede descodificar la secuencia: java.io.FileNotFoundException incluso cuando el archivo IS está realmente allí
- Android: el relleno dejó un mapa de bits con color blanco
- ¿Cómo puedo analizar JSON desde un Java HTTPResponse?
- ¿Cómo agrega encabezados HTTP personalizados a las pestañas personalizadas de Chrome?
No pude encontrar una muestra real para FileLock en android, acabo de leer muchos hilos que esto no es posible en Android. Pero si es así, ¿por qué la documentación tiene una sección para "FileLock"?
- Java Protobuf en Android - NoClassDefFoundError
- Solución automática de laberinto
- ¿Cuándo WeakReference # get () comienza a devolver null?
- Contenido de la barra ActionBar que se superpone
- Apache Commons NET: ¿Debo crear un nuevo objeto FTPClient en cada conexión o reutilizar uno?
- Android - SQLiteException: near "=": error de sintaxis (código 1)
- Error de PorterDuff.Mode de Android: PorterDuff no se puede resolver con una variable
- Cifrado / descifrado de Android con AES
Esto funciona en una aplicación Java normal:
File file = ...; FileInputStream fis = new FileInputStream(file); // or FileOutputStream fos = new FileOutputStream(file); FileLock lock = fis.getChannel().lock(); // or FileLock lock = fos.getChannel().lock(); // do whatever you want with the file lock.release();
- Usted podría intentar
lock()
con el bloqueo, ytrylock()
sin bloquear -
FileLock
no funciona enFileInputStream
. - En Android,
FileLock
funciona entre procesos, pero no funciona entre los subprocesos de un proceso.
Creo que el bloqueo de archivos funciona en la memoria del teléfono "interno", pero no funciona en la tarjeta SD.
FileLock funciona en FileInputStream pero sólo si se adquiere como un bloqueo compartido.
FileInputStream fis = new FileInputStream(file + ext); FileChannel fileChannel = fis.getChannel(); FileLock fileLock = fileChannel.tryLock(0L, Long.MAX_VALUE, /*shared*/true);
En realidad esto tiene sentido. Bloqueo compartido significa que podría haber cualquier número de lectores simultáneos, pero no se permiten escritores. Mientras que el bloqueo exclusivo por defecto proporciona al proceso acceso exclusivo a la escritura. Como no puede escribir con FileInputStream, tiene que adquirir bloqueo compartido en él.
- Habilitar las tecnologías de virtualización de Intel
- Problema de cuenta regresiva al mostrar los días, horas, minutos, segundos, utilizando el temporizador de cuenta atrás en android