Hi Pieter,
I need to check from the Locking class whether a record exists in that data file as well as if the record is deleted or not. Personally I feel it should be checked within the FileAccess class and not within the Locking class - am I right in saying this?
Delegating the workload of your Data class to a FileAccess and Lock class is good design, however, I don't believe the Lock class should know anything about the FileAccess class and vice versa.
In my implementation, much like yourself, I used a form of FileAccess to load the data from the file, but all of my implementation, including locking/unlocking is done within the Data class. I certainly could have taken the approach of using a LockManager, but decided against it.
Either solution is fine, but I think if your LockManager knows about the FileAccess and vice versa, that wouldn't be considered the best design.
You should try and figure out a way to maintain the locking/unlocking in the LockManager/Data and leave the FileAccess to just what the name suggests, file access.
Cheers,
Vlad