-
- All Superinterfaces:
- AttributeView, FileAttributeView
public interface UserDefinedFileAttributeView extends FileAttributeView
A file attribute view that provides a view of a file's user-defined attributes, sometimes known as extended attributes. User-defined file attributes are used to store metadata with a file that is not meaningful to the file system. It is primarily intended for file system implementations that support such a capability directly but may be emulated. The details of such emulation are highly implementation specific and therefore not specified.This
FileAttributeView
provides a view of a file's user-defined attributes as a set of name/value pairs, where the attribute name is represented by aString
. An implementation may require to encode and decode from the platform or file system representation when accessing the attribute. The value has opaque content. This attribute view defines theread
andwrite
methods to read the value into or write from aByteBuffer
. ThisFileAttributeView
is not intended for use where the size of an attribute value is larger thanInteger.MAX_VALUE
.User-defined attributes may be used in some implementations to store security related attributes so consequently, in the case of the default provider at least, all methods that access user-defined attributes require the
RuntimePermission("accessUserDefinedAttributes")
permission when a security manager is installed.The
supportsFileAttributeView
method may be used to test if a specificFileStore
supports the storage of user-defined attributes.Where dynamic access to file attributes is required, the
getAttribute
method may be used to read the attribute value. The attribute value is returned as a byte array (byte[]). ThesetAttribute
method may be used to write the value of a user-defined attribute from a buffer (as if by invoking thewrite
method), or byte array (byte[]).- Since:
- 1.7
-
-
Method Summary
Methods Modifier and Type Method and Description void
delete(String name)
Deletes a user-defined attribute.List<String>
list()
Returns a list containing the names of the user-defined attributes.String
name()
Returns the name of this attribute view.int
read(String name, ByteBuffer dst)
Read the value of a user-defined attribute into a buffer.int
size(String name)
Returns the size of the value of a user-defined attribute.int
write(String name, ByteBuffer src)
Writes the value of a user-defined attribute from a buffer.
-
-
-
Method Detail
-
name
String name()
Returns the name of this attribute view. Attribute views of this type have the name"user"
.- Specified by:
name
in interfaceAttributeView
-
list
List<String> list() throws IOException
Returns a list containing the names of the user-defined attributes.- Returns:
- An unmodifiable list continaing the names of the file's user-defined
- Throws:
IOException
- If an I/O error occursSecurityException
- In the case of the default provider, a security manager is installed, and it deniesRuntimePermission
("accessUserDefinedAttributes") or itscheckRead
method denies read access to the file.
-
size
int size(String name) throws IOException
Returns the size of the value of a user-defined attribute.- Parameters:
name
- The attribute name- Returns:
- The size of the attribute value, in bytes.
- Throws:
ArithmeticException
- If the size of the attribute is larger thanInteger.MAX_VALUE
IOException
- If an I/O error occursSecurityException
- In the case of the default provider, a security manager is installed, and it deniesRuntimePermission
("accessUserDefinedAttributes") or itscheckRead
method denies read access to the file.
-
read
int read(String name, ByteBuffer dst) throws IOException
Read the value of a user-defined attribute into a buffer.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
, wheren
is the size of the attribute value. The first byte in the sequence is at indexp
and the last byte is at indexp + n - 1
, wherep
is the buffer's position. Upon return the buffer's position will be equal top + 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
".UserDefinedFileAttributeView view = Files.getFileAttributeView(path, UserDefinedFileAttributeView.class); String name = "user.mimetype"; ByteBuffer buf = ByteBuffer.allocate(view.size(name)); view.read(name, buf); buf.flip(); String value = Charset.defaultCharset().decode(buf).toString();
- Parameters:
name
- The attribute namedst
- The destination buffer- Returns:
- The number of bytes read, possibly zero
- Throws:
IllegalArgumentException
- If the destination buffer is read-onlyIOException
- If an I/O error occurs or there is insufficient space in the destination buffer for the attribute valueSecurityException
- In the case of the default provider, a security manager is installed, and it deniesRuntimePermission
("accessUserDefinedAttributes") or itscheckRead
method denies read access to the file.- See Also:
size(java.lang.String)
-
write
int write(String name, ByteBuffer src) throws IOException
Writes the value of a user-defined attribute from a buffer.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
, wherer
is the number of bytes remaining in the buffer, that issrc.remaining()
. The sequence of bytes is transferred from the buffer starting at indexp
, wherep
is the buffer's position. Upon return, the buffer's position will be equal top + n
, wheren
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:
UserDefinedFileAttributeView view = FIles.getFileAttributeView(path, UserDefinedFileAttributeView.class); view.write("user.mimetype", Charset.defaultCharset().encode("text/html"));
- Parameters:
name
- The attribute namesrc
- The buffer containing the attribute value- Returns:
- The number of bytes written, possibly zero
- Throws:
IOException
- If an I/O error occursSecurityException
- In the case of the default provider, a security manager is installed, and it deniesRuntimePermission
("accessUserDefinedAttributes") or itscheckWrite
method denies write access to the file.
-
delete
void delete(String name) throws IOException
Deletes a user-defined attribute.- Parameters:
name
- The attribute name- Throws:
IOException
- If an I/O error occurs or the attribute does not existSecurityException
- In the case of the default provider, a security manager is installed, and it deniesRuntimePermission
("accessUserDefinedAttributes") or itscheckWrite
method denies write access to the file.
-
-
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 11/06/2005, zuletzt geändert 04/03/2020
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/java-api-rf-java/nio/file/attribute/UserDefinedFileAttributeView.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.