Eliminate ByteBuffers

Alan Bateman Alan.Bateman at Sun.COM
Mon Oct 6 07:50:12 PDT 2008


Elliotte Harold wrote:
> Well, not everywhere. :-) However I do wonder about the use of 
> ByteBuffers in what amount to maps such as NamedAttributeView.
>
> :
>
> I think named attributes need to be reduced to a simple String name 
> and an Object or String (probably Object) value. ByteBuffers simply 
> should not be in the picture here. I guess you have ByteBuffers on the 
> brain because of all the other work you're doing with them, but 
> they're  not a common or comfortable API for this sort of work. Nor 
> are they necessary.  I think if you treat the NamedAttributeView as a 
> map, it will be much simpler, cleaner, and more effective.
>
>
I suspect we have a mis-understanding here. The NamedAttributeView 
provides a view of a file's "named attributes" which are typically used 
to store meta data that is not meaningful to the file system -- ie: this 
is not your usual file size, time stamps, file permissions, etc. This is 
application defined meta-data that can only be treated as binary blobs 
by the file system and API. The blobs are named and the read/write 
methods are used for transferring the bits (hence the buffers). The 
terminology varies by operating system and file system but think 
extended attributes or named streams.  In our implementation it maps to 
NTFS Alternative Data Streams, ext3 extended attributes, or zfs extended 
attributes. In the samples directory you will find the Xdd sample that 
may be useful to try.

As regards the javadoc you cited - the FileAttributeViews provide for 
both typesafe and "dynamic access" to the attributes that they support. 
For dynamic access, which I think is what you are looking for, you use 
the Attributes class and the getAttribute/setAttribute/readAttributes 
methods to read or update the attributes you require. The readAttributes 
methods returns a map of the requested attributes.

I hope this helps,

-Alan.





More information about the nio-discuss mailing list