public interface SecureDirectoryStream<T> extends DirectoryStream<T>
DirectoryStreamです。SecureDirectoryStreamは、競合のない方法でファイル・ツリーをトラバースしたり、ディレクトリを操作したりする必要のある、洗練されたアプリケーションまたはセキュリティ重視のアプリケーションで使用することを想定しています。競合状態は、一連のファイル操作を単独で実行できない場合に発生することがあります。このインタフェースで定義されている各ファイル操作では、相対パスを指定します。ディレクトリが開いている間に攻撃者によって移動または置換されるかどうかに関係なく、ファイルへのアクセスはすべて、開いているディレクトリを基準に行われます。SecureDirectoryStreamは、仮想作業ディレクトリとしても使用できます。
SecureDirectoryStreamには、ベースとなるオペレーティング・システムからの対応するサポートが必要です。実装がこの機能をサポートしている場合、newDirectoryStreamメソッドによって返されるDirectoryStreamはSecureDirectoryStreamとなり、このインタフェースで定義されているメソッドを呼び出すために、その型にキャストされる必要があります。
デフォルトプロバイダで、セキュリティ・マネージャが設定されている場合は、指定された相対パスをディレクトリの元のパスに基づいて解決することで得られるパスを使用してアクセス権チェックが行われます(そのディレクトリが開かれてから移動されたかどうかは関係ない)。
DirectoryStream.Filter<T>| 修飾子と型 | メソッドと説明 |
|---|---|
void |
deleteDirectory(T path)
ディレクトリを削除します。
|
void |
deleteFile(T path)
ファイルを削除します。
|
<V extends FileAttributeView> |
getFileAttributeView(Class<V> type)
このディレクトリのファイル属性にアクセスするための新しいファイル属性ビューを返します。
|
<V extends FileAttributeView> |
getFileAttributeView(T path, Class<V> type, LinkOption... options)
このディレクトリ内のファイルのファイル属性にアクセスするための新しいファイル属性ビューを返します。
|
void |
move(T srcpath, SecureDirectoryStream<T> targetdir, T targetpath)
このディレクトリからほかのディレクトリにファイルを移動します。
|
SeekableByteChannel |
newByteChannel(T path, Set<? extends OpenOption> options, FileAttribute<?>... attrs)
このディレクトリ内のファイルを開くか作成し、そのファイルにアクセスするためのシーク可能なバイト・チャネルを返します。
|
SecureDirectoryStream<T> |
newDirectoryStream(T path, LinkOption... options)
指定されたパスによって識別されるディレクトリを開き、そのディレクトリ内のエントリを反復処理する
SecureDirectoryStreamを返します。 |
iteratorforEach, spliteratorSecureDirectoryStream<T> newDirectoryStream(T path, LinkOption... options) throws IOException
SecureDirectoryStreamを返します。
このメソッドは、pathパラメータが絶対パスの場合は、newDirectoryStreamメソッドによって指定されたとおりに機能します。パラメータが相対パスである場合、開くディレクトリはこの開いているディレクトリからの相対位置にあります。NOFOLLOW_LINKSオプションを使用すると、ファイルがシンボリック・リンクである場合に必ずこのメソッドが失敗するようにできます。
新しいディレクトリ・ストリームは、作成後、その作成に使用されたディレクトリ・ストリームには依存しません。このディレクトリ・ストリームを閉じても、新しく作成したディレクトリ・ストリームには何の影響もありません。
path - 開くディレクトリへのパスoptions - シンボリック・リンクの処理方法を示すオプションSecureDirectoryStreamオブジェクトClosedDirectoryStreamException - ディレクトリ・ストリームが閉じられている場合NotDirectoryException - ファイルがディレクトリではないために開けなかった場合(オプションの固有例外)IOException - 入出力エラーが発生した場合SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされている場合は、checkReadメソッドが呼び出されてディレクトリへの読取りアクセスがチェックされます。SeekableByteChannel newByteChannel(T path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException
このメソッドは、pathパラメータが絶対パスの場合は、Files.newByteChannelメソッドによって指定されたとおりに機能します。パラメータが相対パスである場合、開くまたは作成するファイルはこの開いているディレクトリからの相対位置にあります。Files.newByteChannelメソッドで定義されているオプションのほかに、NOFOLLOW_LINKSオプションを使用して、ファイルがシンボリック・リンクである場合に必ずこのメソッドが失敗するようにすることもできます。
チャネルは、作成後、その作成に使用されたディレクトリ・ストリームには依存しません。このディレクトリ・ストリームを閉じても、チャネルには何の影響もありません。
path - 開くまたは作成するファイルのパスoptions - ファイルを開く方法を指定するオプションattrs - ファイルの作成時に原子的に設定される属性のオプションのリストClosedDirectoryStreamException - ディレクトリ・ストリームが閉じられている場合IllegalArgumentException - セットにオプションの無効な組み合わせが含まれる場合UnsupportedOperationException - 未サポートのオープン・オプションが指定された場合またはファイルの作成時に原子的に設定できない属性が配列に含まれる場合FileAlreadyExistsException - その名前のファイルがすでに存在する場合、およびCREATE_NEWオプションが指定された場合(オプションの固有例外)IOException - 入出力エラーが発生した場合SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされている場合は、ファイルが読取り用に開かれるとcheckReadメソッドが呼び出されてパスへの読取りアクセスがチェックされます。ファイルが書込み用に開かれた場合は、checkWriteメソッドが呼び出されてパスへの書込みアクセスがチェックされます。void deleteFile(T path) throws IOException
delete()メソッドとは異なり、このメソッドはファイルがディレクトリかどうかを判断するために最初にファイルを検査しません。このメソッドによってディレクトリが削除されるかどうかはシステムに依存しているため、未指定です。ファイルがシンボリック・リンクである場合、そのリンクの最終ターゲットではなく、そのリンク自体が削除されます。パラメータが相対パスである場合、削除するファイルはこの開いているディレクトリからの相対位置にあります。
path - 削除するファイルのパスClosedDirectoryStreamException - ディレクトリ・ストリームが閉じられている場合NoSuchFileException - ファイルが存在しない場合(オプションの固有例外)IOException - 入出力エラーが発生した場合SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされている場合は、checkDeleteメソッドが呼び出されてファイルへの削除アクセスがチェックされます。void deleteDirectory(T path) throws IOException
delete()メソッドとは異なり、このメソッドはファイルがディレクトリかどうかを判断するために最初にファイルを検査しません。このメソッドによってディレクトリ以外のものが削除されるかどうかはシステムに依存しているため、未指定です。パラメータが相対パスである場合、削除するディレクトリはこの開いているディレクトリからの相対位置にあります。
path - 削除するディレクトリのパスClosedDirectoryStreamException - ディレクトリ・ストリームが閉じられている場合NoSuchFileException - ディレクトリが存在しない場合(オプションの固有例外)DirectoryNotEmptyException - ディレクトリが空でないために削除できなかった場合(オプションの固有例外)IOException - 入出力エラーが発生した場合SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされている場合は、checkDeleteメソッドが呼び出されてディレクトリへの削除アクセスがチェックされます。void move(T srcpath, SecureDirectoryStream<T> targetdir, T targetpath) throws IOException
ATOMIC_MOVEオプションが指定されている場合、このメソッドはmoveメソッドと同様の動作をします。つまり、このメソッドは原子的なファイル・システム操作としてファイルを移動します。srcpathパラメータが絶対パスである場合は、ソース・ファイルが検出されます。パラメータが相対パスである場合、それはこの開いているディレクトリからの相対位置にあります。targetpathパラメータが絶対である場合は、ターゲット・ファイル(targetdirパラメータは無視される)が検出されます。パラメータが相対パスである場合、それはtargetdirパラメータで識別される開いているディレクトリからの相対位置にあります。いずれにしても、ターゲット・ファイルが存在する場合、それが置換されるか、このメソッドが失敗するかは実装に固有です。
srcpath - 移動するファイルの名前targetdir - 宛先ディレクトリtargetpath - 宛先ディレクトリ内で、そのファイルに指定する名前ClosedDirectoryStreamException - このディレクトリ・ストリームまたはターゲット・ディレクトリ・ストリームが閉じている場合FileAlreadyExistsException - ファイルがターゲット・ディレクトリにすでに存在していて、置き換えられない場合(オプションの固有例外)AtomicMoveNotSupportedException - 原子的なファイル・システム操作としてファイルを移動できない場合IOException - 入出力エラーが発生した場合SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされている場合は、checkWriteメソッドが呼び出されてソースおよびターゲット・ファイルの両方への書込みアクセスがチェックされます。<V extends FileAttributeView> V getFileAttributeView(Class<V> type)
結果となるファイル属性ビューを使用すると、この(開いている)ディレクトリの属性を読み取ったり更新したりできます。typeパラメータは属性ビューの型を指定し、メソッドはサポートされている場合はその型のインスタンスを返します。このメソッドを呼び出してBasicFileAttributeViewを取得すると、必ずこの開いているディレクトリにバインドされた、そのクラスのインスタンスが返されます。
結果のファイル属性ビューの状態は、このディレクトリ・ストリームと密接な関係にあります。ディレクトリ・ストリームがいったん閉じられると、属性を読み取ったり更新したりするメソッドはすべてClosedDirectoryStreamExceptionをスローします。
V - FileAttributeViewタイプtype - ファイル属性ビューに対応するClassオブジェクトnull<V extends FileAttributeView> V getFileAttributeView(T path, Class<V> type, LinkOption... options)
結果となるファイル属性ビューを使用すると、このディレクトリ内のファイルの属性を読み取ったり更新したりできます。typeパラメータは属性ビューの型を指定し、メソッドはサポートされている場合はその型のインスタンスを返します。このメソッドを呼び出してBasicFileAttributeViewを取得すると、必ずそのディレクトリ内のファイルにバインドされた、そのクラスのインスタンスが返されます。
結果のファイル属性ビューの状態は、このディレクトリ・ストリームと密接な関係にあります。ディレクトリ・ストリームがいったん閉じられると、属性を読み取ったり更新したりするメソッドはすべてClosedDirectoryStreamExceptionをスローします。ファイル属性ビューの作成時にファイルが存在していなくてもかまいませんが、ファイルの属性を読み取ったり更新したりするメソッドは、それが呼び出されたときにファイルが存在しないと失敗します。
V - FileAttributeViewタイプpath - ファイルのパスtype - ファイル属性ビューに対応するClassオブジェクトoptions - シンボリック・リンクの処理方法を示すオプションnull バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.