Частичная блокировка файла - сложное дело, которого избегают многие операционные системы. Однако, если вы настаиваете на этом, одним из способов является создание собственного объекта механизма блокировки, который записывает, какие части файла заблокированы. По сути, перед чтением или записью объекта необходимо запросить блокировку для определенного диапазона байтов файла. Блокировки считаются конфликтующими, если они вообще перекрываются в диапазоне байтов. Блокировки чтения и записи обрабатываются по-разному: чтение может перекрываться с любым количеством блокировок чтения безопасно, но блокировка записи должна перекрываться без других блокировок чтения или записи. Существует множество вопросов о том, стоит ли ждать или прерывать работу, если вы не можете получить блокировку, а также следует ли блокировать чтение во время ожидания записи, но только вы можете ответить на них о вашем приложении.
Учитывая сложность этого, может быть лучше заблокировать весь файл. Проверьте, получаете ли вы адекватную производительность, и не забывайте, что вы можете разрешить несколько операций чтения одновременно, если нет записей.