Возник вопрос: как временно защитить файл от записи/удаления средствами Java?
Постановщик задач для нашего Java-проэкта решил, что нам стоило бы имплементировать так называемые "квази стандарты" при работе с файлами (благородное побуждение

Вскормлённый молоком Майкрософта и взращённый на полях ЭмЭс Офиса, он придумал следующие требования:
- Файлы, открытые одной инстанцией нашей программы, не должны быть изменяемыми другими инстанциями оной же.
- Файлы, открытые нашей программой должны быть защищены от изменений и удаления (на уровне ОС).
Методы создания замка:
1. java.nio.FileChannel.lock()
2. вручную (создаём файл filename.lock)
Но второй пункт требований загоняет меня немного в тупик.
К сожалению Windows под рукой нету, проверял на linux и ему FileChannel.lock() как-то "по барабану" (файлы можно так же менять и удалять, как и без замка).
Решение "вручную" - уж точно не пройдёт.
Но у класса java.io.File есть интересный метод file.setReadOnly()
Наиболее занятная особенность этого метода, что у него не существует инверсного метода. Если файл поставить один раз "read only", то разрешить в него запись в дальнейшем просто невозможно. (SUN вроди как обещал добавить новые методы в Mustang, но в нашем проэкте используется пока что java 1.5 по причине совместимости с софтом индустриальных заказчиков).
Временное решение, предложенное SUN-ом в ответ на этот "баг" - удалить файл и перезаписать заново.
Как удалить файл защищённый от записи?

При установке file.setReadOnly() права на файл изменяются с "rw-r--r--" на "r--r--r--" (логично), НО! до тех пор, пока программа, изменившая права, не закрыта, она спокойно может сделать file.delete() и защита от записи её ни капли не остановит!
Если же программа была закрыта (или "упала" в следствии crash), разрешить запись в файл становится просто невозможно (file.delete() вылетает по permission denied exception).
Даже если и исключить этот критический вариант, это будет значить, что всё равно при закрытии программы (прекращении работы с определённым файлом) прийдётся удалять файл и создавать его заново, даже если файл не был изменён.
Более конкретный вопрос : занимался ли кто-нибудь решением подобной задачи, существует ли стандартное её решение и возможно ли это в принципи?