¿Qué sucede cuando simultáneamente abre dos (o más) FileOutputStreams en el mismo archivo?Escritura simultánea de archivos en Java en Windows
El Java API dice esto:
Algunas plataformas, en particular, permitir que se abra un archivo para escritura por un solo FileOutputStream (u otro objeto de archivo-escritura) a la vez.
supongo Windows no es una plataforma de este tipo, porque tengo dos hilos que leen algún archivo grande (cada uno una diferente), entonces escribirlo en el mismo archivo de salida. No se lanza ninguna excepción, el archivo se crea y parece contener fragmentos de ambos archivos de entrada.
preguntas secundarios:
- es esto cierto para Unix, también?
- Y como quiero que el comportamiento sea el mismo (de hecho, quiero que un hilo se escriba correctamente y el otro que se lo advierta del conflicto), ¿cómo puedo determinar si el archivo ya está abierto para la escritura?
Pero no quiero bloquear cada vez que escribo, quiero bloquear, si alguien ya está escribiendo en el archivo que quiero escribir. En realidad, no quiero bloquear nada. Quiero decirle al segundo hilo que no puede escribir y dejar que el cliente decida sobre otras acciones. –
Muelle esa API de bloqueo. Podrá inspeccionar el bloqueo para determinar si alguien más ya lo ha bloqueado (es decir, no bock) y luego decidir qué hacer –