блокировка файла в Java: предотвращение нескольких процессов в мельфе
Общее требование в многопрофильных сценариях состоит в том, чтобы предотвратить изменение одного процесса, когда его обращается к другому процессу. Это особенно важно в тех случаях, когда необходимо поддерживать целостность файла. Этот метод предоставляет эксклюзивные или общие блокировки, в зависимости от ваших потребностей.
пример использования в вашем сценарии:
в вашем конкретном сценарии вы можете использовать filechannel.lock () в обоих "readapp" и "writeap FileInputStream ReadInputStream = new FileInputStream (file); Filelock readlock = readinputstream.getChannel (). Lock (); Reader Reader = New InputStreamReader (ReadInputStream, Charset) ) { // код чтения } пытаться ( FileOutputStream writeOutputStream = new FileOutputStream (file); Filelock writelock = writeoutputstream.getChannel (). Lock (); // выполнять операции по написанию на writeoutputStream ) { // writeapp code }
обеспечивает безопасность:
. Обратите внимание, что метод fileChannel.lock () бросает перекрытие FileLockexception, если файл уже заблокирован другим процессом. Это исключение можно использовать в качестве сигнала для «writeapp» для перехода к следующему файлу в каталоге.
try ( FileInputStream readInputStream = new FileInputStream(file); FileLock readLock = readInputStream.getChannel().lock(); Reader reader = new InputStreamReader(readInputStream, charset) ) { // ReadApp code } try ( FileOutputStream writeOutputStream = new FileOutputStream(file); FileLock writeLock = writeOutputStream.getChannel().lock(); // Perform writing operations on writeOutputStream ) { // WriteApp code }зависимости платформы:
. Различные операционные системы могут реализовать блокировку файлов по -разному, влияя на поведение вашего кода.
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3