Cosa succede quando si aprono contemporaneamente due (o più) FileOutputStreams sullo stesso file?Scrittura simultanea di file in Java su Windows
Il Java API dice questo:
Alcune piattaforme, in particolare, permettono un file da aprire per la scrittura di un solo FileOutputStream (o altro oggetto file-scrittura) alla volta.
Suppongo che Windows non sia una piattaforma di questo tipo, perché ho due thread che leggono alcuni file di grandi dimensioni (ognuno uno diverso) e lo scrivono sullo stesso file di output. Non viene generata alcuna eccezione, il file viene creato e sembra contenere blocchi da entrambi i file di input.
domande collaterali:
- Questo è vero per Unix, troppo?
- E poiché voglio che il comportamento sia lo stesso (in realtà voglio che un thread scriva correttamente e l'altro sia avvisato del conflitto), come posso determinare che il file sia già aperto per la scrittura?
Ma non voglio bloccare ogni volta che scrivo, voglio bloccare, se qualcuno sta già scrivendo sul file che voglio scrivere. In realtà, non voglio affatto bloccare. Voglio dire al secondo thread che non può scrivere e lasciare che il cliente decida su ulteriori azioni. –
CHeck that lock API. Sarai in grado di ispezionare il lucchetto per determinare se qualcuno lo ha già bloccato (cioè non bock) e poi decidere cosa fare –