public interface AttributeView
This interface is extended or implemented by specific attribute views that define the attributes supported by the view. A specific attribute view will typically define type-safe methods to read or update the attributes that it supports.
Modifier and Type | Method and Description |
---|---|
void |
delete(java.lang.String name)
Deletes a user-defined attribute.
|
java.util.List<java.lang.String> |
list()
Returns a list containing the names of the user-defined attributes.
|
java.lang.String |
name()
Returns the name of this attribute view.
|
int |
read(java.lang.String name,
java.nio.ByteBuffer dst)
Read the value of a user-defined attribute into a buffer.
|
int |
size(java.lang.String name)
Returns the size of the value of a user-defined attribute.
|
int |
write(java.lang.String name,
java.nio.ByteBuffer src)
Writes the value of a user-defined attribute from a buffer.
|
java.lang.String name()
"user"
.java.util.List<java.lang.String> list() throws java.io.IOException
java.io.IOException
- If an I/O error occursint size(java.lang.String name) throws java.io.IOException
name
- The attribute namejava.io.IOException
- If an I/O error occursint read(java.lang.String name, java.nio.ByteBuffer dst) throws java.io.IOException
This method reads the value of the attribute into the given buffer
as a sequence of bytes, failing if the number of bytes remaining in
the buffer is insufficient to read the complete attribute value. The
number of bytes transferred into the buffer is n
, where n
is the size of the attribute value. The first byte in the sequence is at
index p
and the last byte is at index p + n - 1
, where
p
is the buffer's position. Upon return the buffer's position
will be equal to p + n
; its limit will not have changed.
Usage Example:
Suppose we want to read a file's MIME type that is stored as a user-defined
attribute with the name "user.mimetype
".
AttributeView view = object.getAttributeView(); String name = "user.mimetype"; ByteBuffer buf = ByteBuffer.allocate(view.size(name)); view.read(name, buf); buf.flip(); String value = Charset.defaultCharset().decode(buf).toString();
name
- The attribute namedst
- The destination bufferjava.lang.IllegalArgumentException
- If the destination buffer is read-onlyjava.io.IOException
- If an I/O error occurs or there is insufficient space in the
destination buffer for the attribute valuesize(java.lang.String)
int write(java.lang.String name, java.nio.ByteBuffer src) throws java.io.IOException
This method writes the value of the attribute from a given buffer as
a sequence of bytes. The size of the value to transfer is r
,
where r
is the number of bytes remaining in the buffer, that is
src.remaining()
. The sequence of bytes is transferred from the
buffer starting at index p
, where p
is the buffer's
position. Upon return, the buffer's position will be equal to p + n
, where n
is the number of bytes transferred; its limit
will not have changed.
If an attribute of the given name already exists then its value is replaced. If the attribute does not exist then it is created. If it implementation specific if a test to check for the existence of the attribute and the creation of attribute are atomic with repect to other file system activities.
Where there is insufficient space to store the attribute, or the
attribute name or value exceed an implementation specific maximum size
then an IOException
is thrown.
Usage Example: Suppose we want to write a file's MIME type as a user-defined attribute:
AttributeView() view = object.getAttributeView(); view.write("user.mimetype", Charset.defaultCharset().encode("text/html"));
name
- The attribute namesrc
- The buffer containing the attribute valuejava.io.IOException
- If an I/O error occursvoid delete(java.lang.String name) throws java.io.IOException
name
- The attribute namejava.io.IOException
- If an I/O error occurs or the attribute does not exist