public interface UserDefinedFileAttributeView extends FileAttributeView
この FileAttributeView
は、ファイルのユーザー定義属性のビューを一連の名前と値のペアとして提供します。ここでの属性名は String
で表されます。実装では、属性へのアクセス時に、プラットフォームまたはファイルシステム表現からのエンコードやデコードが必要な場合があります。値には不透明な内容が含まれます。この属性ビューは、ByteBuffer
に値を読み込んだり、そこから値を書き出したりする read
および write
メソッドを定義します。この FileAttributeView
は、属性値のサイズが Integer.MAX_VALUE
よりも大きい場合には使用できません。
ユーザー定義属性は、セキュリティー関連の属性を格納するために一部の実装で使用されることがあるため、結果として、少なくともデフォルトユーザーの場合で、セキュリティーマネージャーがインストールされているときは、ユーザー定義の属性にアクセスするすべてのメソッドに RuntimePermission("accessUserDefinedAttributes")
アクセス権が必要です。
supportsFileAttributeView
メソッドは、特定の FileStore
がユーザー定義属性の格納をサポートするかどうかを判定するために使用できます。
ファイル属性への動的アクセスが必要な場合は、getAttribute
メソッドを使用してその属性値を読み取ることができます。属性値はバイト配列 (byte[]) として返されます。setAttribute
メソッドは、(write
メソッドを呼び出したかのように) バッファー、つまりバイト配列 (byte[]) からユーザー定義属性の値を書き出すために使用できます。
修飾子と型 | メソッドと説明 |
---|---|
void |
delete(String name)
ユーザー定義属性を削除します。
|
List<String> |
list()
ユーザー定義属性の名前を含むリストを返します。
|
String |
name()
この属性ビューの名前を返します。
|
int |
read(String name, ByteBuffer dst)
ユーザー定義属性の値をバッファーに読み込みます。
|
int |
size(String name)
ユーザー定義属性の値のサイズを返します。
|
int |
write(String name, ByteBuffer src)
ユーザー定義属性の値をバッファーから書き出します。
|
String name()
"user"
という名前です。name
、インタフェース: AttributeView
List<String> list() throws IOException
IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission
("accessUserDefinedAttributes") を拒否するか、またはその checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。int size(String name) throws IOException
name
- 属性名ArithmeticException
- その属性のサイズが Integer.MAX_VALUE
よりも大きい場合IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission
("accessUserDefinedAttributes") を拒否するか、またはその checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。int read(String name, ByteBuffer dst) throws IOException
このメソッドは、その属性の値を指定されたバッファーにバイトのシーケンスとして読み込み、バッファー内に残っているバイト数が完全な属性値の読み込みに不十分である場合は失敗します。バッファーに転送されるバイト数は n
であり、n
は属性値のサイズです。シーケンス内の最初のバイトはインデックス p
で、最後のバイトはインデックス p + n - 1
です。ここでの p
はバッファーの位置です。復帰すると、バッファーの位置は p + n
に等しくなります。その上限に変化はありません。
使用例: 「user.mimetype
」という名前のユーザー定義属性として格納されているファイルの MIME タイプを読み込むとします。
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();
name
- 属性名dst
- 宛先バッファーIllegalArgumentException
- 宛先バッファーが読み取り専用である場合IOException
- 入出力エラーが発生したか、その属性値を格納できるだけの容量が宛先バッファーにない場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission
("accessUserDefinedAttributes") を拒否するか、またはその checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。size(java.lang.String)
int write(String name, ByteBuffer src) throws IOException
このメソッドは、その属性の値を指定されたバッファーからバイトのシーケンスとして書き出します。転送する値のサイズは r
であり、r
はバッファー内に残っているバイト数、すなわち src.remaining()
です。バイトのシーケンスは、インデックス p
から始まるバッファーから転送され、ここでの p
はバッファーの位置です。復帰すると、バッファーの位置は p + n
に等しくなり、ここでの n
は転送されたバイト数です。その上限に変化はありません。
指定された名前の属性がすでに存在する場合は、その値が置換されます。その属性が存在しない場合は、それが作成されます。属性の存在をチェックするテストや属性の作成がほかのファイルシステムアクティビティーに関して原子的であるかどうかは実装に固有のものです。
属性を格納できるだけの容量がない場合、あるいは属性名または属性値が実装固有の最大サイズを超えている場合は、IOException
がスローされます。
使用例: ファイルの MIME タイプをユーザー定義属性として書き出すとします。
UserDefinedFileAttributeView view = FIles.getFileAttributeView(path, UserDefinedFileAttributeView.class); view.write("user.mimetype", Charset.defaultCharset().encode("text/html"));
name
- 属性名src
- 属性値を含むバッファーIOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission
("accessUserDefinedAttributes") を拒否するか、またはその checkWrite
メソッドがファイルへの書き込みアクセスを拒否する場合。void delete(String name) throws IOException
name
- 属性名IOException
- 入出力エラーが発生した場合またはその属性が存在しない場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission
("accessUserDefinedAttributes") を拒否するか、またはその checkWrite
メソッドがファイルへの書き込みアクセスを拒否する場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.