mapped io for non-default file system
Alan Bateman
Alan.Bateman at oracle.com
Wed Jun 26 11:36:03 PDT 2013
On 26/06/2013 19:12, Philippe Marschall wrote:
> Hi
>
> Currently it's not possible for a non-default file system to provide
> mapped io. A custom FileSystemProvider can override #newFileChannel
> and return a custom FileChannel. This channel class has to implement
> #map (since it's abstract in FileChannel) and return a
> MappedByteBuffer. However even though MappedByteBuffer is abstract it
> can not be implemented by custom file systems because the constructors
> are package protected and it has final methods that call native
> methods (and require a FileDescriptor).
>
> So my question is whether this is intentional because the semantics
> are supposed to be mmap() or rather an oversight. If it's intentional
> then maybe a comment on FileChannel#map would be helpful to document
> the expected behaviour for non-defaulft file systems
> (UnsupportedOperationException or IOException).
>
> Cheers
> Philippe
FileSystemProvider's newFileChannel method is specified to throw UOE
when the provider does not support file channels and only the default
provider is required to support file channels.
So the intention is that if a provider supports FileChannels then it
should implement it completely. I don't think the issue of FileChannels
not support map has come up before.
-Alan
More information about the nio-dev
mailing list