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, 2017, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。