- すべてのスーパー・インタフェース:
AttributeView
,FileAttributeView
このFileAttributeView
は、ファイルのユーザー定義属性のビューを一連の名前と値のペアとして提供します。ここでの属性名はString
で表されます。 実装では、属性へのアクセス時に、プラットフォームまたはファイル・システム表現からのエンコードやデコードが必要な場合があります。 値には不透明な内容が含まれます。 この属性ビューは、ByteBuffer
に値を読み込んだり、そこから値を書き出したりするread
およびwrite
メソッドを定義します。 このFileAttributeView
は、属性値のサイズがInteger.MAX_VALUE
よりも大きい場合には使用できません。
ユーザー定義属性は、セキュリティ関連の属性を格納するために一部の実装で使用されることがあるため、結果として、少なくともデフォルト・ユーザーの場合で、セキュリティ・マネージャがインストールされているときは、ユーザー定義の属性にアクセスするすべてのメソッドにRuntimePermission("accessUserDefinedAttributes")
アクセス権が必要です。
supportsFileAttributeView
メソッドは、特定のFileStore
がユーザー定義属性の格納をサポートするかどうかを判定するために使用できます。
ファイル属性への動的アクセスが必要な場合は、getAttribute
メソッドを使用してその属性値を読み取ることができます。 属性値はバイト配列(byte[])として返されます。 setAttribute
メソッドは、(write
メソッドを呼び出したかのように)バッファ、つまりバイト配列(byte[])からユーザー定義属性の値を書き出すために使用できます。
- 導入されたバージョン:
- 1.7
-
メソッドのサマリー
-
メソッドの詳細
-
name
String name()この属性ビューの名前を返します。 この型の属性ビューは"user"
という名前です。- 定義:
name
、インタフェースAttributeView
- 戻り値:
- 属性ビューの名前
-
list
List<String> list() throws IOExceptionユーザー定義属性の名前を含むリストを返します。- 戻り値:
- ファイルのユーザー定義属性の名前を含む変更不可能なリスト
- 例外:
IOException
- 入出力エラーが発生した場合SecurityException
- デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、それがRuntimePermission
("accessUserDefinedAttributes")
を拒否するか、またはそのcheckRead
メソッドがファイルへの読取りアクセスを拒否する場合。
-
size
int size(String name) throws IOException ユーザー定義属性の値のサイズを返します。- パラメータ:
name
- 属性名- 戻り値:
- 属性値のサイズ(バイト数)。
- 例外:
ArithmeticException
- その属性のサイズがInteger.MAX_VALUE
よりも大きい場合IOException
- 入出力エラーが発生した場合SecurityException
- デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、それがRuntimePermission
("accessUserDefinedAttributes")
を拒否するか、またはそのcheckRead
メソッドがファイルへの読取りアクセスを拒否する場合。
-
read
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
メソッドがファイルへの読取りアクセスを拒否する場合。- 関連項目:
-
write
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
メソッドがファイルへの書込みアクセスを拒否する場合。
-
delete
void delete(String name) throws IOException ユーザー定義属性を削除します。- パラメータ:
name
- 属性名- 例外:
IOException
- 入出力エラーが発生した場合またはその属性が存在しない場合SecurityException
- デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、それがRuntimePermission
("accessUserDefinedAttributes")
を拒否するか、またはそのcheckWrite
メソッドがファイルへの書込みアクセスを拒否する場合。
-