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