モジュール java.base
パッケージ java.nio.file.attribute

インタフェースPosixFileAttributeView

  • すべてのスーパー・インタフェース:
    AttributeView, BasicFileAttributeView, FileAttributeView, FileOwnerAttributeView

    public interface PosixFileAttributeView
    extends BasicFileAttributeView, FileOwnerAttributeView
    Portable Operating System Interface (POSIX)の標準ファミリを実装するオペレーティング・システムによって使用されるファイル・システムのファイルに一般的に関連付けられるファイル属性のビューを提供するファイル属性ビューです。

    POSIXの標準ファミリを実装するオペレーティング・システムは、ファイルの所有者グループ所有者、および関連するアクセス権を持つファイル・システムを一般的に使用します。 このファイル属性ビューは、これらの属性への読み取りおよび書込みアクセスを提供します。

    readAttributesメソッドは、ファイルの属性を読み取るために使用されます。 ファイルownerは、UserPrincipalによって表され、アクセス制御を目的としたファイル所有者の識別情報を示します。 group-ownerは、GroupPrincipalによって表され、グループ所有者の識別情報を示します。ここでのグループとは、そのグループのメンバーのアクセス権を特定するために管理目的で作成された識別情報です。

    permissions属性は、アクセス権のセットです。 このファイル属性ビューは、PosixFilePermissionクラスで定義されている9つのアクセス権へのアクセスを提供します。 これらの9つのアクセス権ビットは、ファイル所有者、グループ、およびその他(所有者とグループのメンバーを除く識別情報を意味する)の読み取り書き込み、および実行アクセスを特定します。 一部のオペレーティング・システムおよびファイル・システムでは、追加のアクセス権ビットを提供することがありますが、このリリースではそれらのほかのビットはこのクラスによって定義されていません。

    使用例: ファイルの所有者とアクセス権を出力する必要があるとします。

         Path file = ...
         PosixFileAttributes attrs = Files.getFileAttributeView(file, PosixFileAttributeView.class)
             .readAttributes();
         System.out.format("%s %s%n",
             attrs.owner().getName(),
             PosixFilePermissions.toString(attrs.permissions()));
     

    動的アクセス

    ファイル属性への動的アクセスが必要な場合、この属性ビューによってサポートされている属性はBasicFileAttributeViewおよびFileOwnerAttributeViewで定義されているものと同じですが、そのほかに次の属性もサポートされています。

    サポートされる属性
    "permissions" Set<PosixFilePermission>
    "group" GroupPrincipal

    getAttributeメソッドは、readAttributes()メソッドを呼び出したかのように、これらの属性またはBasicFileAttributeViewによって定義される任意の属性を読み取るために使用できます。

    setAttributeメソッドは、BasicFileAttributeViewに定義される、ファイルの最終変更時間、最終アクセス時間、または作成時間属性を更新するために使用できます。 さらにそれは、setPermissionssetOwner、およびsetGroupメソッドをそれぞれ呼び出したかのように、アクセス権、所有権、またはグループ所有者を更新するためにも使用できます。

    初期アクセス権の設定

    この属性ビューをサポートしている実装では、ファイルまたはディレクトリ作成時の初期アクセス権の設定もサポートする場合があります。 初期アクセス権は、"posix:permissions"というnameと、アクセス権のセットを示すvalueを含むFileAttributeとして、createFileまたはcreateDirectoryメソッドに提供されます。 次の例では、ファイルの作成時にasFileAttributeメソッドを使用してFileAttributeを構築します。

         Path path = ...
         Set<PosixFilePermission> perms =
             EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ);
         Files.createFile(path, PosixFilePermissions.asFileAttribute(perms));
     

    ファイルの作成時にアクセス権が設定された場合は、そのアクセス権の実際の値が属性オブジェクトの値と異なることがあります。 その理由は実装に固有のものです。 たとえば、UNIXシステムでは、新しく作成されたファイルのアクセス権ビットに影響を及ぼすumaskがプロセスに含まれています。 アクセス権の設定が実装によってサポートされており、ベースとなるファイル・システムがアクセス権をサポートしている場合、実際のアクセス権の値は、createFileまたはcreateDirectoryメソッドに提供された属性の値に等しいか、それよりも小さくなる必要があります。 つまり、そのファイルの安全性は要求されたものよりも高くなる可能性があります。

    導入されたバージョン:
    1.7
    • メソッドの詳細

      • readAttributes

        PosixFileAttributes readAttributes()
                                    throws IOException
        インタフェースからコピーされた説明: BasicFileAttributeView
        一括操作として基本ファイル属性を読み取ります。

        ほかのファイル・システム操作に関して、すべてのファイル属性が原子的操作として読み取られるかどうかは実装固有です。

        定義:
        readAttributes、インタフェース: BasicFileAttributeView
        戻り値:
        ファイル属性
        例外:
        IOException - 入出力エラーが発生した場合
        SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、それがRuntimePermission("accessUserInformation")を拒否するか、またはそのcheckReadメソッドがファイルへの読取りアクセスを拒否する場合。
      • setPermissions

        void setPermissions​(Set<PosixFilePermission> perms)
                     throws IOException
        ファイル・アクセス権を更新します。
        パラメータ:
        perms - アクセス権の新しいセット
        例外:
        ClassCastException - セットに次のタイプでない要素が含まれる場合: PosixFilePermission
        IOException - 入出力エラーが発生した場合
        SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、それがRuntimePermission("accessUserInformation")を拒否するか、またはそのcheckWriteメソッドがファイルへの書込みアクセスを拒否する場合。
      • setGroup

        void setGroup​(GroupPrincipal group)
               throws IOException
        ファイルのグループ所有者を更新します。
        パラメータ:
        group - 新しいファイルのグループ所有者
        例外:
        IOException - 入出力エラーが発生した場合
        SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、それがRuntimePermission("accessUserInformation")を拒否するか、またはそのcheckWriteメソッドがファイルへの書込みアクセスを拒否する場合。