@dieter, Thanks for your feedback. I finally had a bit of time to look into it. As it is, LocalFS creates a file object with OFS.Image.File(id, '', file) where file is the local file handler. The object is then wrapped with a mixin (Wrapper, OFS.Image.File). It would be possible to create here (Wrapper class) the properties you mention, although I don't know the nature of the corresponding attributes in OFS.Image.File and if inheritance allows indeed an attribute to be replaced by a property.
I had a brief look at File.init() and _read_data(). It's not simple code but in fact I got the impression that it already does what you suggest, that is, read the actual data only when needed, at least for big files.
Finaly, for completeness, REQUEST arrives in bobo_traverse with an actual response yet, which makes sense. There is a key, TraversalRequestNameStack, which contains, ['manage_workspace']. So, it would be possible for LocalFS to detect the specific situation (as an alternative solution) and return a minimal object. However, I don't know what is expected by Zope.
In any case, I don't have the time to handle this corner situation of LocalFS, which does not affect my use case, and which might not even be a real issue considering Image.File implementation. At least for now, I will simply document the issue and point to this thread. Thanks again for all the patient and detailed feedback!