абстрактный метод lock
Блокирует файл или его часть.
По умолчанию устанавливается эксклюзивная блокировка, но это можно изменить с помощью аргумента mode.
Блокирует диапазон байтов файла от start до end, не включая байт в позиции end. Если аргументы не указаны, блокируется весь файл. Если указан только start, файл блокируется начиная с позиции байта start и до конца файла, независимо от того, насколько он увеличится. Можно указать явное значение end, превышающее текущую длину файла.
Чтобы установить эксклюзивную блокировку файла, его необходимо открыть для записи.
Если mode имеет значение FileLock.exclusive или FileLock.shared, возникает ошибка, если блокировку не удается установить. Если mode имеет значение FileLock.blockingExclusive или FileLock.blockingShared, возвращенный объект Future завершается только после установки блокировки.
ПРИМЕЧАНИЕ Поведение блокировки файлов немного различается на разных платформах:
В Linux и OS X используются рекомендательные блокировки. Их неожиданная особенность заключается в том, что все блокировки, связанные с файлом, снимаются, когда процесс закрывает любой файловый дескриптор этого файла. Обратите внимание, что такая блокировка фактически не запрещает доступ к файлу. Также учтите, что рекомендательные блокировки устанавливаются на уровне процесса. Это означает, что несколько изолятов в одном процессе могут получить эксклюзивную блокировку одного и того же файла.
В Windows области, используемые для блокировки и снятия блокировки, должны совпадать. В противном случае при снятии блокировки возникнет ошибка ОС «Сегмент уже разблокирован».
Реализация
Future<RandomAccessFile> lock(
[FileLock mode = FileLock.exclusive, int start = 0, int end = -1]);
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-io/RandomAccessFile/lock.html