¿Cómo comprobar FileLock sin truncar el archivo?

Recientemente he añadido filelocks a mi asistente de descarga asynctask:

FileOutputStream file = new FileOutputStream(_outFile); file.getChannel().lock(); 

Y después de completar la descarga, file.close() para liberar el bloqueo.

Desde un BroadcastReceiver llamado (hilo diferente), necesito ir a través de los archivos y ver qué se descargan y cuáles todavía están bloqueados. Comencé con trylock:

 for (int i=0; i<files.length; i++) { try { System.out.print((files[i]).getName()); test = new FileOutputStream(files[i]); FileLock lock = test.getChannel().tryLock(); if (lock != null) { lock.release(); //Not a partial download. Do stuff. } } catch (Exception e) { e.printStackTrace(); } finally { test.close(); } } 

Desafortunadamente, leí que el archivo está truncado (0 bytes) cuando se crea FileOutputStream. Lo configuré para añadir, pero el bloqueo no parece tener efecto, todos parecen estar desbloqueado (totalmente descargado)

¿Hay otra manera de comprobar si un bloqueo de escritura se aplica al archivo actualmente, o estoy usando los métodos equivocados aquí? Además, ¿hay una manera de depurar los bloqueos de archivos, desde el terminal ADB o Eclipse?

Nada de esto va a funcionar. Compruebe el Javadoc. Las cerraduras se llevan a cabo en nombre de todo el proceso, es decir, la JVM, no por hilos individuales.

Mi primer pensamiento sería abrirlo para añadir por los javadocs

 test = new FileOutputStream(files[i], true); // the true specifies for append 
  • ¿Cuál es la forma correcta de tratar con multithreading y Realm?
  • java.lang.IllegalStateException: Llamar Ver métodos en otro subproceso que el subproceso de interfaz de usuario
  • Autenticador Okhttp multihilo
  • Android VideoView setVideoURI bloquea el subproceso de la interfaz de usuario
  • SDK de Android: ejecuta funciones en segundo plano
  • ¿Por qué mis hilos no mueren y causan una pérdida de memoria?
  • Programación de Android Timer vs. scheduleAtFixedRate
  • Cómo utilizar AsyncTask
  • Obtener el controlador devolver null en LooperThread
  • ¿Cómo puedo asegurar que el controlador de otro hilo no sea nulo antes de llamarlo?
  • Acceso al dominio desde un subproceso incorrecto Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.