public final class Files extends Object
ほとんどの場合、ここで定義されているメソッドは関連付けられたファイルシステムプロバイダにファイル操作の実行を委譲します。
修飾子と型 | メソッドと説明 |
---|---|
static long |
copy(InputStream in, Path target, CopyOption... options)
すべてのバイトを入力ストリームからファイルにコピーします。
|
static long |
copy(Path source, OutputStream out)
すべてのバイトをファイルから出力ストリームにコピーします。
|
static Path |
copy(Path source, Path target, CopyOption... options)
ファイルをターゲットファイルにコピーします。
|
static Path |
createDirectories(Path dir, FileAttribute<?>... attrs)
存在しないすべての親ディレクトリをまず作成することで、ディレクトリを作成します。
|
static Path |
createDirectory(Path dir, FileAttribute<?>... attrs)
新しいディレクトリを作成します。
|
static Path |
createFile(Path path, FileAttribute<?>... attrs)
新しい空のファイルを作成し、ファイルがすでに存在する場合は失敗します。
|
static Path |
createLink(Path link, Path existing)
既存のファイルに対して新しいリンク (ディレクトリエントリ) を作成します (オプションの操作)。
|
static Path |
createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs)
ターゲットへのシンボリックリンクを作成します (オプションの操作)。
|
static Path |
createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs)
指定されたディレクトリで新しいディレクトリを生成し、その名前には、指定された接頭辞が使用されます。
|
static Path |
createTempDirectory(String prefix, FileAttribute<?>... attrs)
デフォルトの一時ファイルディレクトリで新しいディレクトリを生成し、その名前には、指定された接頭辞が使用されます。
|
static Path |
createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs)
指定されたディレクトリで新しい空のファイルを生成し、その名前には、指定された接頭辞および接尾辞の文字列が使用されます。
|
static Path |
createTempFile(String prefix, String suffix, FileAttribute<?>... attrs)
指定された接頭辞と接尾辞をファイル名の生成に使用して、デフォルトの一時ファイルディレクトリに空のファイルを生成します。
|
static void |
delete(Path path)
ファイルを削除します。
|
static boolean |
deleteIfExists(Path path)
ファイルが存在する場合は削除します。
|
static boolean |
exists(Path path, LinkOption... options)
ファイルが存在するかどうかをテストします。
|
static Object |
getAttribute(Path path, String attribute, LinkOption... options)
ファイル属性の値を読み取ります。
|
static <V extends FileAttributeView> |
getFileAttributeView(Path path, Class<V> type, LinkOption... options)
指定されたタイプのファイル属性ビューを返します。
|
static FileStore |
getFileStore(Path path)
ファイルが置かれているファイルストアを表す
FileStore を返します。 |
static FileTime |
getLastModifiedTime(Path path, LinkOption... options)
ファイルの最終変更時間を返します。
|
static UserPrincipal |
getOwner(Path path, LinkOption... options)
ファイルの所有者を返します。
|
static Set<PosixFilePermission> |
getPosixFilePermissions(Path path, LinkOption... options)
ファイルの POSIX ファイルアクセス権を返します。
|
static boolean |
isDirectory(Path path, LinkOption... options)
ファイルがディレクトリかどうかをテストします。
|
static boolean |
isExecutable(Path path)
ファイルが実行可能かどうかをテストします。
|
static boolean |
isHidden(Path path)
ファイルが隠しファイルとみなされるかどうかを判断します。
|
static boolean |
isReadable(Path path)
ファイルが読み取り可能かどうかをテストします。
|
static boolean |
isRegularFile(Path path, LinkOption... options)
ファイルが不透明な内容の通常ファイルかどうかをテストします。
|
static boolean |
isSameFile(Path path, Path path2)
2 つのパスが同じファイルを検出するかどうかを判断します。
|
static boolean |
isSymbolicLink(Path path)
ファイルがシンボリックリンクかどうかをテストします。
|
static boolean |
isWritable(Path path)
ファイルが書き込み可能かどうかをテストします。
|
static Path |
move(Path source, Path target, CopyOption... options)
ファイルをターゲットファイルに移動するか、そのファイル名を変更します。
|
static BufferedReader |
newBufferedReader(Path path, Charset cs)
ファイルを読み取り用に開き、そのファイルから効果的な方法でテキストを読み取るために使用できる
BufferedReader を返します。 |
static BufferedWriter |
newBufferedWriter(Path path, Charset cs, OpenOption... options)
ファイルを書き込み用に開くか作成して、そのファイルに効果的な方法でテキストを書き込むために使用できる
BufferedWriter を返します。 |
static SeekableByteChannel |
newByteChannel(Path path, OpenOption... options)
ファイルを開くか作成し、そのファイルにアクセスするためのシーク可能なバイトチャネルを返します。
|
static SeekableByteChannel |
newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs)
ファイルを開くか作成し、そのファイルにアクセスするためのシーク可能なバイトチャネルを返します。
|
static DirectoryStream<Path> |
newDirectoryStream(Path dir)
ディレクトリを開き、ディレクトリ内のすべてのエントリを反復するための
DirectoryStream を返します。 |
static DirectoryStream<Path> |
newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter)
ディレクトリを開き、そのディレクトリ内のエントリに対して反復処理を行う
DirectoryStream を返します。 |
static DirectoryStream<Path> |
newDirectoryStream(Path dir, String glob)
ディレクトリを開き、そのディレクトリ内のエントリに対して反復処理を行う
DirectoryStream を返します。 |
static InputStream |
newInputStream(Path path, OpenOption... options)
ファイルを開き、そのファイルから読み取る入力ストリームを返します。
|
static OutputStream |
newOutputStream(Path path, OpenOption... options)
ファイルを開くか作成して、そのファイルにバイトを書き込むために使用できる出力ストリームを返します。
|
static boolean |
notExists(Path path, LinkOption... options)
このパスが示すファイルが存在しないかどうかをテストします。
|
static String |
probeContentType(Path path)
ファイルのコンテンツタイプを調べます。
|
static byte[] |
readAllBytes(Path path)
ファイルからすべてのバイトを読み取ります。
|
static List<String> |
readAllLines(Path path, Charset cs)
ファイルからすべての行を読み取ります。
|
static <A extends BasicFileAttributes> |
readAttributes(Path path, Class<A> type, LinkOption... options)
一括操作としてファイル属性を読み取ります。
|
static Map<String,Object> |
readAttributes(Path path, String attributes, LinkOption... options)
一括操作として一連のファイル属性を読み取ります。
|
static Path |
readSymbolicLink(Path link)
シンボリックリンクのターゲットを読み取ります (オプションの操作)。
|
static Path |
setAttribute(Path path, String attribute, Object value, LinkOption... options)
ファイル属性の値を設定します。
|
static Path |
setLastModifiedTime(Path path, FileTime time)
ファイルの最終変更時間属性を更新します。
|
static Path |
setOwner(Path path, UserPrincipal owner)
ファイル所有者を更新します。
|
static Path |
setPosixFilePermissions(Path path, Set<PosixFilePermission> perms)
ファイルの POSIX ファイルアクセス権を設定します。
|
static long |
size(Path path)
ファイルのサイズをバイトで返します。
|
static Path |
walkFileTree(Path start, FileVisitor<? super Path> visitor)
ファイルツリーを参照します。
|
static Path |
walkFileTree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor)
ファイルツリーを参照します。
|
static Path |
write(Path path, byte[] bytes, OpenOption... options)
バイトをファイルに書き込みます。
|
static Path |
write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options)
テキスト行をファイルに書き込みます。
|
public static InputStream newInputStream(Path path, OpenOption... options) throws IOException
mark
または reset
メソッドをサポートしている必要はありません。ストリームは複数の並行スレッドからのアクセスに対して安全です。読み取りはファイルの最初から始まります。返されるストリームが非同期クローズ可能または割り込み可能、あるいはその両方かどうかは、ファイルシステムプロバイダによって大きく異なるため、未指定です。
options
パラメータはファイルを開く方法を決定します。オプションが 1 つも存在しない場合、それは READ
オプションでファイルを開くことと同等です。実装では、READ
オプションのほかに、追加の実装固有のオプションをサポートすることもあります。
path
- 開くファイルへのパスoptions
- ファイルを開く方法を指定するオプションIllegalArgumentException
- オプションの無効な組み合わせが指定された場合UnsupportedOperationException
- 未サポートのオプションが指定された場合IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされます。public static OutputStream newOutputStream(Path path, OpenOption... options) throws IOException
このメソッドは、オプションの配列に READ
オプションが含まれない可能性があることを除いては、newByteChannel
メソッドで指定されたとおりにファイルを開くか作成します。オプションがない場合、このメソッドは CREATE
、TRUNCATE_EXISTING
、および WRITE
オプションがあるかのように機能します。つまり、書き込み用にファイルを開きます (存在しない場合は作成し、存在する場合は最初に既存の通常ファイル
をサイズ 0
に切り詰めます)。
使用例:
Path path = ... // truncate and overwrite an existing file, or create the file if // it doesn't initially exist OutputStream out = Files.newOutputStream(path); // append to an existing file, fail if the file does not exist out = Files.newOutputStream(path, APPEND); // append to an existing file, create file if it doesn't initially exist out = Files.newOutputStream(path, CREATE, APPEND); // always create new file, failing if it already exists out = Files.newOutputStream(path, CREATE_NEW);
path
- 開くまたは作成するファイルへのパスoptions
- ファイルを開く方法を指定するオプションIllegalArgumentException
- options
にオプションの無効な組み合わせが含まれる場合UnsupportedOperationException
- 未サポートのオプションが指定された場合IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されてファイルへの書き込みアクセスがチェックされます。DELETE_ON_CLOSE
オプションでファイルが開かれた場合は、checkDelete
メソッドが呼び出されて削除アクセスがチェックされます。public static SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException
options
パラメータはファイルを開く方法を決定します。READ
と WRITE
オプションにより、ファイルを読み取りまたは書き込みで開くべきかどうかが決定されます。いずれのオプション (または APPEND
オプション) も存在しない場合、ファイルは読み取り用に開かれます。デフォルトでは、読み取りまたは書き込みはファイルの先頭から始まります。
READ
および WRITE
以外に、次のオプションが存在する場合があります。
オプション | 説明 |
---|---|
APPEND |
このオプションが存在する場合は、ファイルは書き込みのために開かれ、チャネルの write メソッドの各呼び出しは、まず位置をファイルの終わりに進めてから要求されたデータを書き込みます。このような位置の移動とデータの書き込みは、不可分な単一の操作として行われます。この操作は、システムに依存しているため未指定です。このオプションは、READ または TRUNCATE_EXISTING オプションと同時には使用できません。 |
TRUNCATE_EXISTING |
このオプションが存在する場合は、既存のファイルはサイズが 0 バイトに切り詰められます。このオプションは、ファイルを読み取り専用に開いた場合は無視されます。 |
CREATE_NEW |
このオプションが存在する場合は、新しいファイルが作成され、ファイルがすでに存在するか、シンボリックリンクである場合は失敗します。ファイルの作成時に、ファイルがあるかどうかのチェックや、ない場合のファイルの生成は、ほかのファイルシステムの操作に対して原子的です。このオプションは、ファイルを読み取り専用に開いた場合は無視されます。 |
CREATE |
このオプションが存在する場合は、既存のファイルが存在する場合はそれが開かれ、そうでない場合は新しいファイルが作成されます。このオプションは、CREATE_NEW オプションも存在する場合またはファイルを読み取り専用に開いた場合は無視されます。 |
DELETE_ON_CLOSE |
このオプションが存在する場合、実装は、ファイルが close メソッドによって閉じられるときに、ベストエフォートでファイルを削除しようとします。close メソッドが呼び出されない場合、Java 仮想マシンの終了時にファイルを削除するためのベストエフォートの試みが行われます。 |
SPARSE |
新しいファイルの作成時に、このオプションは新しいファイルがスパースであることのヒントになります。このオプションは、新しいファイルを作成しない場合は無視されます。 |
SYNC |
ファイルの内容またはメタデータの更新は、基本となる記憶装置に同期的に書き込まれることを必要とします。(「同期入出力ファイル整合性」を参照)。 |
DSYNC |
ファイルの内容の更新は、基本となる記憶装置に同期的に書き込まれることを必要とします。(「同期入出力ファイル整合性」を参照)。 |
実装では、追加の実装固有のオプションをサポートすることもあります。
attrs
パラメータは、新しいファイルの作成時に原子的に設定するオプションのファイル属性
です。
デフォルトプロバイダの場合、返されるシーク可能なバイトチャネルは FileChannel
です。
使用例:
Path path = ...
// open file for reading
ReadableByteChannel rbc = Files.newByteChannel(path, EnumSet.of(READ)));
// open file for writing to the end of an existing file, creating
// the file if it doesn't already exist
WritableByteChannel wbc = Files.newByteChannel(path, EnumSet.of(CREATE,APPEND));
// create file with initial permissions, opening it for both reading and writing
FileAttribute<<SetPosixFilePermission>> perms = ...
SeekableByteChannel sbc = Files.newByteChannel(path, EnumSet.of(CREATE_NEW,READ,WRITE), perms);
path
- 開くまたは作成するファイルへのパスoptions
- ファイルを開く方法を指定するオプションattrs
- ファイルの作成時に原子的に設定されるファイル属性のオプションのリストIllegalArgumentException
- セットにオプションの無効な組み合わせが含まれる場合UnsupportedOperationException
- 未サポートのオープンオプションが指定された場合またはファイルの作成時に原子的に設定できない属性が配列に含まれる場合FileAlreadyExistsException
- その名前のファイルがすでに存在する場合、および CREATE_NEW
オプションが指定された場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、ファイルが読み取り用に開かれると checkRead
メソッドが呼び出されてパスへの読み取りアクセスがチェックされます。ファイルが書き込み用に開かれた場合は、checkWrite
メソッドが呼び出されてパスへの書き込みアクセスがチェックされます。DELETE_ON_CLOSE
オプションでファイルが開かれた場合は、checkDelete
メソッドが呼び出されて削除アクセスがチェックされます。FileChannel.open(Path,Set,FileAttribute[])
public static SeekableByteChannel newByteChannel(Path path, OpenOption... options) throws IOException
このメソッドは、newByteChannel
メソッドで指定されたとおりにファイルを開くか作成します。
path
- 開くまたは作成するファイルへのパスoptions
- ファイルを開く方法を指定するオプションIllegalArgumentException
- セットにオプションの無効な組み合わせが含まれる場合UnsupportedOperationException
- サポートされていないオープンオプションが指定された場合FileAlreadyExistsException
- その名前のファイルがすでに存在する場合、および CREATE_NEW
オプションが指定された場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、ファイルが読み取り用に開かれると checkRead
メソッドが呼び出されてパスへの読み取りアクセスがチェックされます。ファイルが書き込み用に開かれた場合は、checkWrite
メソッドが呼び出されてパスへの書き込みアクセスがチェックされます。DELETE_ON_CLOSE
オプションでファイルが開かれた場合は、checkDelete
メソッドが呼び出されて削除アクセスがチェックされます。FileChannel.open(Path,OpenOption[])
public static DirectoryStream<Path> newDirectoryStream(Path dir) throws IOException
DirectoryStream
を返します。ディレクトリストリームの iterator
によって返される要素は、Path
型で、それぞれがディレクトリ内のエントリを表します。Path
オブジェクトは、dir
に対してディレクトリエントリの名前を解決
したかのように取得されます。
try-with-resources 構文を使用しない場合は、ディレクトリストリームの close
メソッドは、開いているディレクトリのために保持されているリソースを解放するために、反復が完了したあとに呼び出されるべきです。
ディレクトリ内のエントリに対して競合のない方法で実行する操作を実装がサポートする場合は、返されるディレクトリストリームは SecureDirectoryStream
です。
dir
- ディレクトリへのパスDirectoryStream
オブジェクトNotDirectoryException
- ファイルがディレクトリではないために開けなかった場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてディレクトリへの読み取りアクセスがチェックされます。public static DirectoryStream<Path> newDirectoryStream(Path dir, String glob) throws IOException
DirectoryStream
を返します。ディレクトリストリームの iterator
によって返される要素は、Path
型で、それぞれがディレクトリ内のエントリを表します。Path
オブジェクトは、dir
に対してディレクトリエントリの名前を解決
したかのように取得されます。イテレータによって返されるエントリは、そのファイル名の String
表現を指定されたグロッビングパターンと照合することでフィルタ処理されます。
たとえば、ディレクトリ内の「.java」で終わるファイルすべてについて反復処理を行うとします。
Path dir = ... try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.java")) { : }
グロッビングパターンは、getPathMatcher
メソッドによって指定されます。
try-with-resources 構文を使用しない場合は、ディレクトリストリームの close
メソッドは、開いているディレクトリのために保持されているリソースを解放するために、反復が完了したあとに呼び出されるべきです。
ディレクトリ内のエントリに対して競合のない方法で実行する操作を実装がサポートする場合は、返されるディレクトリストリームは SecureDirectoryStream
です。
dir
- ディレクトリへのパスglob
- glob パターンDirectoryStream
オブジェクトPatternSyntaxException
- パターンが無効な場合NotDirectoryException
- ファイルがディレクトリではないために開けなかった場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてディレクトリへの読み取りアクセスがチェックされます。public static DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException
DirectoryStream
を返します。ディレクトリストリームの iterator
によって返される要素は、Path
型で、それぞれがディレクトリ内のエントリを表します。Path
オブジェクトは、dir
に対してディレクトリエントリの名前を解決
したかのように取得されます。イテレータによって返されるエントリは、指定されたフィルタ
によってフィルタ処理されます。
try-with-resources 構文を使用しない場合は、ディレクトリストリームの close
メソッドは、開いているディレクトリのために保持されているリソースを解放するために、反復が完了したあとに呼び出されるべきです。
キャッチされないエラーまたは実行時例外のためにフィルタが終了した場合は、hasNext
または next
メソッドにそれが通知されます。IOException
がスローされた場合は、その IOException
を原因として含む DirectoryIteratorException
が hasNext
または next
メソッドによってスローされます。
ディレクトリ内のエントリに対して競合のない方法で実行する操作を実装がサポートする場合は、返されるディレクトリストリームは SecureDirectoryStream
です。
使用例: ディレクトリ内の 8K よりも大きいファイルすべてについて反復処理を行うとします。
DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() { public boolean accept(Path file) throws IOException { return (Files.size(file) > 8192L); } }; Path dir = ... try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) { : }
dir
- ディレクトリへのパスfilter
- ディレクトリストリームフィルタDirectoryStream
オブジェクトNotDirectoryException
- ファイルがディレクトリではないために開けなかった場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてディレクトリへの読み取りアクセスがチェックされます。public static Path createFile(Path path, FileAttribute<?>... attrs) throws IOException
attrs
パラメータは、ファイルの作成時に原子的に設定するオプションのファイル属性
です。各属性はその name
で識別されます。配列に同じ名前の属性が複数含まれる場合は、最後のもの以外はすべて無視されます。
path
- 作成するファイルへのパスattrs
- ファイルの作成時に原子的に設定されるファイル属性のオプションのリストUnsupportedOperationException
- ファイルの作成時に原子的に設定できない属性が配列に含まれる場合FileAlreadyExistsException
- その名前のファイルがすでに存在する場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合または親ディレクトリが存在しない場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されて新しいファイルへの書き込みアクセスがチェックされます。public static Path createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException
createDirectories
メソッドを使用するようにしてください。
attrs
パラメータは、ディレクトリの作成時に原子的に設定するオプションのファイル属性
です。各属性はその name
で識別されます。配列に同じ名前の属性が複数含まれる場合は、最後のもの以外はすべて無視されます。
dir
- 作成するディレクトリattrs
- ディレクトリの作成時に原子的に設定されるファイル属性のオプションのリストUnsupportedOperationException
- ディレクトリの作成時に原子的に設定できない属性が配列に含まれる場合FileAlreadyExistsException
- その名前のファイルがすでに存在するためにディレクトリを作成できなかった場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合または親ディレクトリが存在しない場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されて新しいディレクトリへの書き込みアクセスがチェックされます。public static Path createDirectories(Path dir, FileAttribute<?>... attrs) throws IOException
createDirectory
メソッドとは異なり、ディレクトリがすでに存在しているために作成できなかった場合でも例外はスローされません。
attrs
パラメータは、存在しないディレクトリの作成時に原子的に設定するオプションのファイル属性
です。各ファイル属性はその name
で識別されます。配列に同じ名前の属性が複数含まれる場合は、最後のもの以外はすべて無視されます。
このメソッドが失敗する場合は、親ディレクトリの一部 (すべてではない) を作成したあとにそうなることがあります。
dir
- 作成するディレクトリattrs
- ディレクトリの作成時に原子的に設定されるファイル属性のオプションのリストUnsupportedOperationException
- ディレクトリの作成時に原子的に設定できない属性が配列に含まれる場合FileAlreadyExistsException
- dir
が存在するが、ディレクトリではない場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、ディレクトリの作成を試みる前に checkWrite
メソッドが呼び出され、チェックされる親ディレクトリごとに、その checkRead
メソッドが呼び出されます。dir
が絶対パスでない場合は、その toAbsolutePath
を呼び出してその絶対パスを取得することが必要になることがあります。これによって、セキュリティーマネージャーの checkPropertyAccess
メソッドが呼び出されて、システムプロパティー user.dir
へのアクセスがチェックされることがあります。public static Path createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs) throws IOException
Path
は指定されたディレクトリと同じ FileSystem
に関連付けられます。
ファイル名の生成方法に関する詳細は、実装に依存しているため、特定できません。可能な場合は、prefix
および suffix
を使用して、File.createTempFile(String,String,File)
メソッドと同じ方法で候補の名前が生成されます。
File.createTempFile
メソッドと同様に、このメソッドは一時ファイル機能の一部に過ぎません。作業ファイルとして使用する場合は、結果となるファイルを DELETE_ON_CLOSE
オプションを使って開き、適切な close
メソッドが呼び出されたときにそのファイルが削除されるようにすることができます。あるいは、shutdown-hook
、または File.deleteOnExit()
メカニズムを使用してファイルを自動的に削除することもできます。
attrs
パラメータは、ファイルの作成時に原子的に設定するオプションのファイル属性
です。各属性はその name
で識別されます。配列に同じ名前の属性が複数含まれる場合は、最後のもの以外はすべて無視されます。ファイル属性が 1 つも指定されない場合、結果となるファイルは File.createTempFile(String,String,File)
メソッドで作成されたファイルよりアクセス権が制限されることがあります。
dir
- ファイルが作成されるディレクトリへのパスprefix
- ファイル名を生成するために使用される接頭辞文字列。次も可能です: null
suffix
- ファイル名を生成するために使用される接尾辞文字列。null
も指定でき、その場合は、接尾辞 ".tmp
" が使用されます。attrs
- ファイルの作成時に原子的に設定されるファイル属性のオプションのリストIllegalArgumentException
- 候補のファイル名を生成するために prefix または suffix パラメータを使用できない場合UnsupportedOperationException
- ディレクトリの作成時に原子的に設定できない属性が配列に含まれる場合IOException
- 入出力エラーが発生した場合または dir
が存在しない場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されてファイルへの書き込みアクセスがチェックされます。public static Path createTempFile(String prefix, String suffix, FileAttribute<?>... attrs) throws IOException
Path
はデフォルトの FileSystem
に関連付けられています。
このメソッドは、dir
パラメータが一時ファイルディレクトリの場合は、createTempFile(Path,String,String,FileAttribute[])
メソッドによって指定されたとおりに機能します。
prefix
- ファイル名を生成するために使用される接頭辞文字列。次も可能です: null
suffix
- ファイル名を生成するために使用される接尾辞文字列。null
も指定でき、その場合は、接尾辞 ".tmp
" が使用されます。attrs
- ファイルの作成時に原子的に設定されるファイル属性のオプションのリストIllegalArgumentException
- 候補のファイル名を生成するために prefix または suffix パラメータを使用できない場合UnsupportedOperationException
- ディレクトリの作成時に原子的に設定できない属性が配列に含まれる場合IOException
- 入出力エラーが発生した場合または一時ファイルディレクトリが存在しない場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されてファイルへの書き込みアクセスがチェックされます。public static Path createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs) throws IOException
Path
は指定されたディレクトリと同じ FileSystem
に関連付けられます。
ディレクトリ名の生成方法に関する詳細は、実装に依存しているため、特定できません。可能な場合は、prefix
を使用して候補の名前が生成されます。
createTempFile
メソッドと同様に、このメソッドは一時ファイル機能の一部に過ぎません。shutdown-hook
、または File.deleteOnExit()
メカニズムを使用すると、ディレクトリを自動的に削除できます。
attrs
パラメータは、ディレクトリの作成時に原子的に設定するオプションのファイル属性
です。各属性はその name
で識別されます。配列に同じ名前の属性が複数含まれる場合は、最後のもの以外はすべて無視されます。
dir
- ディレクトリが作成されるディレクトリへのパスprefix
- ディレクトリ名を生成するために使用される接頭辞文字列。次も可能です: null
attrs
- ディレクトリの作成時に原子的に設定されるファイル属性のオプションのリストIllegalArgumentException
- 候補のディレクトリ名を生成するために prefix を使用できない場合UnsupportedOperationException
- ディレクトリの作成時に原子的に設定できない属性が配列に含まれる場合IOException
- 入出力エラーが発生した場合または dir
が存在しない場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、ディレクトリの作成時に checkWrite
メソッドが呼び出されて書き込みアクセスがチェックされます。public static Path createTempDirectory(String prefix, FileAttribute<?>... attrs) throws IOException
Path
はデフォルトの FileSystem
に関連付けられています。
このメソッドは、dir
パラメータが一時ファイルディレクトリの場合は、createTempDirectory(Path,String,FileAttribute[])
メソッドによって指定されたとおりに機能します。
prefix
- ディレクトリ名を生成するために使用される接頭辞文字列。次も可能です: null
attrs
- ディレクトリの作成時に原子的に設定されるファイル属性のオプションのリストIllegalArgumentException
- 候補のディレクトリ名を生成するために prefix を使用できない場合UnsupportedOperationException
- ディレクトリの作成時に原子的に設定できない属性が配列に含まれる場合IOException
- 入出力エラーが発生した場合または一時ファイルディレクトリが存在しない場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、ディレクトリの作成時に checkWrite
メソッドが呼び出されて書き込みアクセスがチェックされます。public static Path createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs) throws IOException
target
パラメータは、そのリンクのターゲットです。それは絶対
または相対パスにすることができ、存在しないこともあります。ターゲットが相対パスである場合、結果となるリンクに対するファイルシステム操作は、そのリンクのパスを基準にして行われます。
attrs
パラメータは、リンクの作成時に原子的に設定するオプションの属性
です。各属性はその name
で識別されます。配列に同じ名前の属性が複数含まれる場合は、最後のもの以外はすべて無視されます。
シンボリックリンクがサポートされているが、ベースとなる FileStore
がシンボリックリンクをサポートしていない場合、これは IOException
で失敗することがあります。また、一部のオペレーティングシステムではシンボリックリンクを作成するために Java 仮想マシンを実装固有の特権で起動することが必要なことがあり、その場合はこのメソッドによって IOException
がスローされることがあります。
link
- 作成するシンボリックリンクへのパスtarget
- シンボリックリンクのターゲットattrs
- シンボリックリンクの作成時に原子的に設定される属性の配列UnsupportedOperationException
- 実装がシンボリックリンクをサポートしない場合、またはシンボリックリンクの作成時に原子的に設定できない属性が配列に含まれる場合FileAlreadyExistsException
- その名前のファイルがすでに存在する場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが LinkPermission
("symbolic") を拒否するか、またはその checkWrite
メソッドがシンボリックリンクのパスへの書き込みアクセスを拒否する場合。public static Path createLink(Path link, Path existing) throws IOException
link
パラメータは、作成するディレクトリエントリを検出します。existing
パラメータは、既存のファイルへのパスです。このメソッドは、そのファイルの新しいディレクトリエントリを作成することで、link
をパスとして使用してそれにアクセスできるようにします。一部のファイルシステムでは、これは「ハードリンク」の作成として知られています。ファイル属性がそのファイルのために保持されるか、またはディレクトリエントリごとに保持されるかは、ファイルシステムに固有であるため、特定できません。通常、ファイルシステムでは、1 つのファイルのすべてのリンク (ディレクトリエントリ) が同じファイルシステム上にある必要があります。さらに、一部のプラットフォームでは、ハードリンクを作成するか、ディレクトリへのリンクを作成するために Java 仮想マシンを実装固有の特権で起動することが必要な場合もあります。
link
- 作成するリンク (ディレクトリエントリ) existing
- 既存のファイルへのパスUnsupportedOperationException
- 実装が、既存のファイルをディレクトリに追加することをサポートしない場合FileAlreadyExistsException
- その名前のファイルがすでに存在するためにエントリを作成できなかった場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが LinkPermission
("hard") を拒否するか、またはその checkWrite
メソッドがリンクまたは既存のファイルへの書き込みアクセスを拒否する場合。public static void delete(Path path) throws IOException
実装では、ファイルがディレクトリかどうかを判断するためにファイルを検査することが必要な場合があります。その結果、このメソッドはほかのファイルシステム操作に関して原始的でない可能性があります。ファイルがシンボリックリンクの場合、そのリンクの最終ターゲットではなく、そのシンボリックリンク自体が削除されます。
ファイルがディレクトリの場合、ディレクトリは空である必要があります。一部の実装では、ディレクトリの作成時に作成される特殊なファイルやリンクのエントリがディレクトリに存在します。このような実装では、ディレクトリは特殊なエントリのみが存在する場合に空であるとみなされます。このメソッドを walkFileTree
メソッドとともに使用すると、必要に応じてディレクトリとそのディレクトリ内のすべてのエントリを削除したり、ファイルツリー全体を削除したりすることができます。
一部のオペレーシングシステムでは、この Java 仮想マシンまたはほかのプログラムによって開かれて使用されているファイルを削除できない場合があります。
path
- 削除するファイルへのパスNoSuchFileException
- ファイルが存在しない場合 (オプションの固有例外)DirectoryNotEmptyException
- ファイルがディレクトリで、ディレクトリが空でないために削除できなかった場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、SecurityManager.checkDelete(String)
メソッドが呼び出されてファイルへの削除アクセスがチェックされます。public static boolean deleteIfExists(Path path) throws IOException
delete(Path)
メソッドと同様に、実装では、ファイルがディレクトリかどうかを判断するためにファイルを検査することが必要な場合があります。その結果、このメソッドはほかのファイルシステム操作に関して原始的でない可能性があります。ファイルがシンボリックリンクの場合、そのリンクの最終ターゲットではなく、そのシンボリックリンク自体が削除されます。
ファイルがディレクトリの場合、ディレクトリは空である必要があります。一部の実装では、ディレクトリの作成時に作成される特殊なファイルやリンクのエントリがディレクトリに存在します。このような実装では、ディレクトリは特殊なエントリのみが存在する場合に空であるとみなされます。
一部のオペレーシングシステムでは、この Java 仮想マシンまたはほかのプログラムによって開かれて使用されているファイルを削除できない場合があります。
path
- 削除するファイルへのパスtrue
、ファイルが存在しないために削除できなかった場合は false
DirectoryNotEmptyException
- ファイルがディレクトリで、ディレクトリが空でないために削除できなかった場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、SecurityManager.checkDelete(String)
メソッドが呼び出されてファイルへの削除アクセスがチェックされます。public static Path copy(Path source, Path target, CopyOption... options) throws IOException
このメソッドは、コピーの実行方法を指定する options
パラメータを使って、ファイルをターゲットファイルにコピーします。デフォルトでは、ソースとターゲットが同じ
ファイルである場合を除き (その場合、このメソッドはファイルをコピーしないで終了する)、ターゲットファイルがすでに存在するか、シンボリックリンクである場合にそのコピーは失敗します。ファイル属性がターゲットファイルにコピーされる必要ありません。シンボリックリンクがサポートされていて、ファイルがシンボリックリンクである場合、そのリンクの最終ターゲットがコピーされます。ファイルがディレクトリである場合、空のディレクトリがターゲットの場所に作成されます (そのディレクトリ内のエントリはコピーされない)。このメソッドを walkFileTree
メソッドとともに使用すると、必要に応じてディレクトリとそのディレクトリ内のすべてのエントリをコピーしたり、ファイルツリー全体をコピーしたりすることができます。
options
パラメータには次のものを含めることができます。
オプション | 説明 |
---|---|
REPLACE_EXISTING |
ターゲットファイルが存在する場合は、ターゲットファイルが空でないディレクトリでなければ置換されます。ターゲットファイルが存在してシンボリックリンクである場合は、リンクのターゲットではなくシンボリックリンク自身が置換されます。 |
COPY_ATTRIBUTES |
このファイルに関連付けられたファイル属性をターゲットファイルにコピーしようとします。コピーされる正確なファイル属性はプラットフォームやファイルシステムに依存しているため、特定できません。少なくとも、最終更新時間 はターゲットファイルにコピーされます (ソースとターゲットの両方のファイルストアでサポートされている場合)。ファイルのタイムスタンプをコピーすると、精度が失われる可能性があります。 |
NOFOLLOW_LINKS |
シンボリックリンクはたどられません。ファイルがシンボリックリンクの場合、そのリンクのターゲットではなく、そのシンボリックリンク自体がコピーされます。ファイル属性を新しいリンクにコピーできるかどうかは実装に固有です。つまり、シンボリックリンクをコピーする場合は COPY_ATTRIBUTES オプションが無視される可能性があります。 |
このインタフェースの実装は、追加の実装固有オプションをサポートできます。
ファイルのコピーは、原子的操作ではありません。IOException
がスローされる場合は、ターゲットファイルが不完全であるか、またはそのファイル属性の一部がソースファイルからコピーされていない可能性があります。REPLACE_EXISTING
オプションが指定され、ターゲットファイルが存在する場合は、ターゲットファイルが置換されます。ファイルがあるかどうかのチェックや新しいファイルの作成は、ほかのファイルシステムアクティビティーに対して原子的でない可能性があります。
使用例: ファイルをディレクトリ内にコピーして、そのファイル名をソースファイルと同じに名前にするとします。
Path source = ... Path newdir = ... Files.copy(source, newdir.resolve(source.getFileName());
source
- コピーするファイルへのパスtarget
- ターゲットファイルへのパス (ソースパスとは異なるプロバイダに関連付けられている場合がある)options
- コピーをどのように実行するべきかを指定するオプションUnsupportedOperationException
- サポートされないコピーオプションが配列に含まれる場合FileAlreadyExistsException
- ターゲットファイルは存在するけれども、REPLACE_EXISTING
オプションが指定されていないために置換できない場合 (オプションの固有例外)DirectoryNotEmptyException
- REPLACE_EXISTING
オプションが指定されているけれども、空でないディレクトリであるために置換できない場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてソースファイルへの読み取りアクセスがチェックされ、checkWrite
メソッドが呼び出されてターゲットファイルへの書き込みアクセスがチェックされます。シンボリックリンクがコピーされる場合は、セキュリティーマネージャーが呼び出されて LinkPermission
("symbolic")
がチェックされます。public static Path move(Path source, Path target, CopyOption... options) throws IOException
デフォルトでは、このメソッドはターゲットファイルへのファイルの移動を試み、ソースとターゲットが同じ
ファイルである場合を除き (その場合、このメソッドは何の効果もない)、ターゲットファイルが存在する場合は失敗します。ファイルがシンボリックリンクの場合、そのリンクのターゲットではなく、そのシンボリックリンク自体が移動されます。このメソッドは空のディレクトリを移動するために呼び出すこともできます。一部の実装では、ディレクトリの作成時に作成される特殊なファイルやリンクのエントリがディレクトリに存在します。このような実装では、ディレクトリは特殊なエントリのみが存在する場合に空であるとみなされます。空でないディレクトリを移動するために呼び出すと、そのディレクトリ内のエントリを移動する必要がない場合にそのディレクトリが移動されます。たとえば、同じ FileStore
上にあるディレクトリの名前を変更する場合、通常はそのディレクトリ内のエントリを移動する必要はありません。ディレクトリを移動するときにそのエントリも移動する必要がある場合、このメソッドは失敗します (IOException
をスローする)。ファイルツリーを移動する場合は、ディレクトリの移動ではなくコピーが必要になることがあり、これを行うには、copy
メソッドを Files.walkFileTree
ユーティリティーメソッドと組み合わせて使用します。
options
パラメータには次のものを含めることができます。
オプション | 説明 |
---|---|
REPLACE_EXISTING |
ターゲットファイルが存在する場合は、ターゲットファイルが空でないディレクトリでなければ置換されます。ターゲットファイルが存在してシンボリックリンクである場合は、リンクのターゲットではなくシンボリックリンク自身が置換されます。 |
ATOMIC_MOVE |
この移動は原子的なファイルシステム操作として実行され、他のオプションはすべて無視されます。ターゲットファイルが存在する場合、その既存ファイルが置換されるか、またはこのメソッドが IOException をスローして失敗するかは実装に固有です。移動を原子的なファイルシステム操作として実行できない場合は、AtomicMoveNotSupportedException がスローされます。これは、ターゲットの場所が異なる FileStore 上にあるときにファイルをコピーする必要があったり、ターゲットの場所がこのオブジェクトとは異なるプロバイダに関連付けられていたりする場合などに発生することがあります。 |
このインタフェースの実装は、追加の実装固有オプションをサポートできます。
移動のときにファイルをコピーする必要がある場合は、最終変更時間
が新しいファイルにコピーされます。実装では、他のファイル属性のコピーも試みることができますが、それらのファイル属性をコピーできない場合に必ずしも失敗するとはかぎりません。移動を原子的でない操作として実行し、IOException
がスローされる場合、ファイルの状態は特定できません。元のファイルとターゲットファイルの両方が存在したり、ターゲットファイルが不完全であったり、そのファイル属性の一部が元のファイルからコピーされていなかったりする可能性があります。
使用例: ファイルの名前を「newname」に変更して、そのファイルを同じディレクトリに保存するとします。
Path source = ... Files.move(source, source.resolveSibling("newname"));あるいは、ファイルを新しいディレクトリに移動して、同じファイル名を保持し、ディレクトリ内にその名前の既存ファイルがあれば置換するとします。
Path source = ... Path newdir = ... Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
source
- 移動するファイルへのパスtarget
- ターゲットファイルへのパス (ソースパスとは異なるプロバイダに関連付けられている場合がある)options
- 移動をどのように実行するべきかを指定するオプションUnsupportedOperationException
- サポートされないコピーオプションが配列に含まれる場合FileAlreadyExistsException
- ターゲットファイルは存在するけれども、REPLACE_EXISTING
オプションが指定されていないために置換できない場合 (オプションの固有例外)DirectoryNotEmptyException
- REPLACE_EXISTING
オプションが指定されているけれども、空でないディレクトリであるために置換できない場合 (オプションの固有例外)AtomicMoveNotSupportedException
- オプション配列に ATOMIC_MOVE
オプションを含まれるけれども、原子的なファイルシステム操作としてファイルを移動できない場合。IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されてソースおよびターゲットファイルの両方への書き込みアクセスがチェックされます。public static Path readSymbolicLink(Path link) throws IOException
ファイルシステムがシンボリックリンクをサポートしている場合、このメソッドはそのリンクのターゲットを読み取るために使用され、ファイルがシンボリックリンクでない場合は失敗します。そのリンクのターゲットは存在しなくてもかまいません。返される Path
オブジェクトは、link
と同じファイルシステムに関連付けられます。
link
- シンボリックリンクへのパスPath
オブジェクトUnsupportedOperationException
- この実装がシンボリックリンクをサポートしていない場合。NotLinkException
- ファイルがシンボリックリンクではないためにターゲットを読み取れなかった場合 (オプションの固有例外)IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、リンクを読み取る "readlink
" アクションに FilePermission
が付与されていることがチェックされます。public static FileStore getFileStore(Path path) throws IOException
FileStore
を返します。
FileStore
への参照が取得されると、返された FileStore
に対する操作や、そこから取得される FileStoreAttributeView
オブジェクトが引き続きそのファイルの存在に左右されるのかどうかは実装に固有です。特に、ファイルが削除されたり、別のファイルストアに移動されたりする場合では、この動作を特定できません。
path
- ファイルへのパスIOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされ、さらに RuntimePermission
("getFileStoreAttributes") もチェックされます。public static boolean isSameFile(Path path, Path path2) throws IOException
両方の Path
オブジェクトが等しい
場合、このメソッドはファイルが存在するかどうかを判定せずに true
を返します。2 つの Path
オブジェクトが別々のプロバイダに関連付けられている場合、このメソッドは false
を返します。それ以外の場合、このメソッドは両方の Path
オブジェクトが同じファイルを検出するかどうかを判定し、実装によっては、両方のファイルを開くか、それにアクセスすることが必要になる場合があります。
ファイルシステムやファイルが static のままである場合、このメソッドは null 以外の Path
に対して同値関係を実装します。
パス
f
について、isSameFile(f,f)
は true
を返します。パス
f
および g
について、isSameFile(f,g)
は isSameFile(g,f)
と同等です。パス
f
、g
、および h
について、isSameFile(f,g)
が true
を返し、isSameFile(g,h)
が true
を返す場合、isSameFile(g,h)
は true
を返します。 path
- ファイルへの一方のパスpath2
- もう一方のパスtrue
IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されて 2 つのファイルへの読み取りアクセスがチェックされます。BasicFileAttributes.fileKey()
public static boolean isHidden(Path path) throws IOException
hidden
属性が設定されているファイルが隠しファイルとみなされます。
実装によっては、このメソッドは、ファイルが隠しファイルとみなされるかどうかを判断するためにファイルシステムにアクセスすることが必要になる場合があります。
path
- テストするファイルへのパスtrue
IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされます。public static String probeContentType(Path path) throws IOException
このメソッドは、インストールされている FileTypeDetector
の実装を使用して、指定されたファイルを調査し、そのコンテンツタイプを特定します。各ファイルタイプディテクタの probeContentType
が順番に呼び出されて、ファイルタイプが調査されます。ファイルが認識される場合は、コンテンツタイプが返されます。インストールされているどのファイルタイプディテクタによってもファイルが認識されない場合は、システムデフォルトのファイルタイプディテクタが呼び出されてコンテンツタイプが推測されます。
Java 仮想マシンのある特定の呼び出しで、システム全体のファイルタイプディテクタリストが保持されます。インストールされているファイルタイプディテクタのロードには、ServiceLoader
クラスで定義されているサービスプロバイダのロード機能が使用されます。インストールされているファイルタイプディテクタのロードにはシステムクラスローダーが使用されます。システムクラスローダーが見つからない場合は拡張クラスローダーが使用され、拡張クラスローダーが見つからない場合はブートストラップクラスローダーが使用されます。通常、インストールされるファイルタイプディテクタはアプリケーションクラスパス上の JAR ファイルまたは拡張ディレクトリ内に配置されます。その JAR ファイルのリソースディレクトリ META-INF/services
には java.nio.file.spi.FileTypeDetector
というプロバイダ構成ファイルが含まれており、そのファイルには引数なしのコンストラクタを持つ FileTypeDetector
の具象サブクラスの 1 つまたは複数の完全修飾名が一覧表示されます。インストールされているファイルタイプディテクタの検索またはインスタンス化のプロセスが失敗すると、特定できないエラーがスローされます。インストールされているプロバイダの検索順序は実装によって異なります。
このメソッドの戻り値は、RFC 2045「MIME (Multipurpose Internet Mail Extensions) のパート 1: インターネットメッセージ本文の形式」で定義されている、MIME (Multipurpose Internet Mail Extension) コンテンツタイプの文字列形式の値になります。この文字列は、RFC の文法に従って構文解析可能であることが保証されています。
path
- 調査するファイルへのパスnull
IOException
- 入出力エラーが発生した場合SecurityException
- セキュリティーマネージャーがインストールされ、それがファイルタイプディテクタ実装に必要な未指定のアクセス権を拒否する場合。public static <V extends FileAttributeView> V getFileAttributeView(Path path, Class<V> type, LinkOption... options)
ファイル属性ビューは、一連のファイル属性の読み取り専用または更新可能なビューを提供します。このメソッドは、ファイル属性の読み取りや更新を行うための型保証されたメソッドをファイル属性ビューで定義する場合に使用するよう意図されています。type
パラメータは必要な属性ビューのタイプで、メソッドはサポートされている場合はそのタイプのインスタンスを返します。BasicFileAttributeView
タイプは、ファイルの基本属性へのアクセスをサポートします。このメソッドを呼び出して、そのタイプのファイル属性ビューを選択すると、常にそのクラスのインスタンスが返されます。
options
配列を使用すると、ファイルがシンボリックリンクである場合の、結果となるファイル属性ビューによるシンボリックリンクの処理方法を指定できます。デフォルトではシンボリックリンクはたどられます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。シンボリックリンクをサポートしない実装では、このオプションは無視されます。
使用例: ファイルの ACL (サポートされている場合) の読み取りまたは設定を行うとします。
Path path = ... AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class); if (view != null) { List<AclEntry> acl = view.getAcl(); : }
path
- ファイルへのパスtype
- ファイル属性ビューに対応する Class
オブジェクトoptions
- シンボリックリンクの処理方法を示すオプションnull
public static <A extends BasicFileAttributes> A readAttributes(Path path, Class<A> type, LinkOption... options) throws IOException
type
パラメータは必要な属性のタイプで、このメソッドではそのタイプがサポートされている場合にそのインスタンスを返します。すべての実装でファイル属性の基本セットがサポートされているため、このメソッドを BasicFileAttributes.class
という type
パラメータで呼び出した場合、UnsupportedOperationException
はスローされません。
options
配列を使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトでは、シンボリックリンクはたどられ、リンクの最終ターゲットのファイル属性が読み取られます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
ほかのファイルシステム操作に関して、すべてのファイル属性が原子的操作として読み取られるかどうかは実装固有です。
使用例: ファイルの属性を一括して読み取るとします。
Path path = ... BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);あるいは、シンボリックリンクをたどらずにファイルの POSIX 属性を読み取るとします。
PosixFileAttributes attrs = Files.readAttributes(path, PosixFileAttributes.class, NOFOLLOW_LINKS);
path
- ファイルへのパスtype
- 読み取る必要のあるファイル属性の Class
options
- シンボリックリンクの処理方法を示すオプションUnsupportedOperationException
- 指定されたタイプの属性がサポートされない場合IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされます。このメソッドが、セキュリティー保護を必要とする属性を読み取るために呼び出された場合、セキュリティーマネージャーが呼び出されて追加のアクセス権をチェックする場合があります。public static Path setAttribute(Path path, String attribute, Object value, LinkOption... options) throws IOException
attribute
パラメータは、設定する属性を識別し、次の形式をとります。
[view-name:]attribute-nameここで、角括弧 [...] は省略可能なコンポーネントを表し、文字
':'
はそれ自体を表します。
view-name は、ファイル属性のセットを指定する、FileAttributeView
の name
です。これを指定しない場合は、デフォルトで "basic"
(多くのファイルシステムに共通するファイル属性の基本セットを識別するファイル属性ビューの名前) になります。attribute-name はそのセット内の属性の名前です。
options
配列を使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトでは、シンボリックリンクがたどられ、そのリンクの最終ターゲットのファイル属性が設定されます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
使用例: DOS の「hidden」属性を設定するとします。
Path path = ... Files.setAttribute(path, "dos:hidden", true);
path
- ファイルへのパスattribute
- 設定する属性value
- 属性値options
- シンボリックリンクの処理方法を示すオプションpath
パラメータUnsupportedOperationException
- 属性ビューが使用できない場合IllegalArgumentException
- 属性名が指定されない場合、または認識されない場合、または属性値の型は正しいが値が不適切な場合ClassCastException
- 属性値が予想される型でないか、予想される型でない要素を含むコレクションである場合IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、その checkWrite
メソッドがファイルへの書き込みアクセスを拒否する場合。このメソッドが、セキュリティー保護を必要とする属性を設定するために呼び出された場合、セキュリティーマネージャーが呼び出されて追加のアクセス権をチェックする場合があります。public static Object getAttribute(Path path, String attribute, LinkOption... options) throws IOException
attribute
パラメータは、読み取る属性を指定し、次の形式をとります。
[view-name:]attribute-nameここで、角括弧 [...] は省略可能なコンポーネントを表し、文字
':'
はそれ自体を表します。
view-name は、ファイル属性のセットを指定する、FileAttributeView
の name
です。これを指定しない場合は、デフォルトで "basic"
(多くのファイルシステムに共通するファイル属性の基本セットを識別するファイル属性ビューの名前) になります。attribute-name は属性の名前です。
options
配列を使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトでは、シンボリックリンクはたどられ、リンクの最終ターゲットのファイル属性が読み取られます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
使用例: 「unix
」ビューをサポートするシステム上のファイル所有者のユーザー ID を要求するとします。
Path path = ... int uid = (Integer)Files.getAttribute(path, "unix:uid");
path
- ファイルへのパスattribute
- 読み取る属性options
- シンボリックリンクの処理方法を示すオプションUnsupportedOperationException
- 属性ビューが使用できない場合IllegalArgumentException
- 属性名が指定されていないか、認識されない場合IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、その checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。このメソッドが、セキュリティー保護を必要とする属性を読み取るために呼び出された場合、セキュリティーマネージャーが呼び出されて追加のアクセス権をチェックする場合があります。public static Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options) throws IOException
attributes
パラメータは、読み取る属性を識別し、次の形式をとります。
[view-name:]attribute-listここで、角括弧 [...] は省略可能なコンポーネントを表し、文字
':'
はそれ自体を表します。
view-name は、ファイル属性のセットを指定する、FileAttributeView
の name
です。これを指定しない場合は、デフォルトで "basic"
(多くのファイルシステムに共通するファイル属性の基本セットを識別するファイル属性ビューの名前) になります。
attribute-list コンポーネントは、0 個以上の読み取る属性の名前の、コンマで区切られたリストです。このリストに値 "*"
が含まれている場合は、すべての属性が読み取られます。サポートされていない属性は無視され、返されるマップには含まれません。ほかのファイルシステム操作に関して、すべての属性が原子的操作として読み取られるかどうかは実装固有です。
次の例は、attributes
パラメータの使用可能な値を示しています。
"*"
すべての 基本ファイル属性
を読み取ります。"size,lastModifiedTime,lastAccessTime"
ファイルサイズ、最終更新時間、および最終アクセス時間の属性を読み取ります。 "posix:*"
すべての POSIX-file-attributes
を読み取ります。"posix:permissions,owner,size"
POSIX ファイルアクセス権、所有者、およびファイルサイズを読み取ります。
options
配列を使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトでは、シンボリックリンクはたどられ、リンクの最終ターゲットのファイル属性が読み取られます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
path
- ファイルへのパスattributes
- 読み取る属性options
- シンボリックリンクの処理方法を示すオプションUnsupportedOperationException
- 属性ビューが使用できない場合IllegalArgumentException
- 属性が指定されない場合または認識されない属性が指定された場合IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、その checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。このメソッドが、セキュリティー保護を必要とする属性を読み取るために呼び出された場合、セキュリティーマネージャーが呼び出されて追加のアクセス権をチェックする場合があります。public static Set<PosixFilePermission> getPosixFilePermissions(Path path, LinkOption... options) throws IOException
path
パラメータは、PosixFileAttributeView
をサポートする FileSystem
に関連付けられます。この属性ビューは、Portable Operating System Interface (POSIX) の標準ファミリを実装するオペレーティングシステムによって使用されるファイルシステムのファイルに一般的に関連付けられるファイル属性へのアクセスを提供します。
options
配列を使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトでは、シンボリックリンクはたどられ、リンクの最終ターゲットのファイル属性が読み取られます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
path
- ファイルへのパスoptions
- シンボリックリンクの処理方法を示すオプションUnsupportedOperationException
- 関連付けられるファイルシステムが次をサポートしない場合: PosixFileAttributeView
IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission
("accessUserInformation") を拒否するか、またはその checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。public static Path setPosixFilePermissions(Path path, Set<PosixFilePermission> perms) throws IOException
path
パラメータは、PosixFileAttributeView
をサポートする FileSystem
に関連付けられます。この属性ビューは、Portable Operating System Interface (POSIX) の標準ファミリを実装するオペレーティングシステムによって使用されるファイルシステムのファイルに一般的に関連付けられるファイル属性へのアクセスを提供します。
path
- ファイルを識別するファイル参照perms
- アクセス権の新しいセットUnsupportedOperationException
- 関連付けられるファイルシステムが次をサポートしない場合: PosixFileAttributeView
ClassCastException
- セットに次のタイプでない要素が含まれる場合: PosixFilePermission
IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission
("accessUserInformation") を拒否するか、またはその checkWrite
メソッドがファイルへの書き込みアクセスを拒否する場合。public static UserPrincipal getOwner(Path path, LinkOption... options) throws IOException
path
パラメータは、FileOwnerAttributeView
をサポートするファイルシステムに関連付けられます。このファイル属性ビューは、ファイルの所有者であるファイル属性へのアクセスを提供します。
path
- ファイルを識別するファイル参照options
- シンボリックリンクの処理方法を示すオプションUnsupportedOperationException
- 関連付けられるファイルシステムが次をサポートしない場合: FileOwnerAttributeView
IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission
("accessUserInformation") を拒否するか、またはその checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。public static Path setOwner(Path path, UserPrincipal owner) throws IOException
path
パラメータは、FileOwnerAttributeView
をサポートするファイルシステムに関連付けられます。このファイル属性ビューは、ファイルの所有者であるファイル属性へのアクセスを提供します。
使用例: "joe" をファイルの所有者にするとします。
Path path = ... UserPrincipalLookupService lookupService = provider(path).getUserPrincipalLookupService(); UserPrincipal joe = lookupService.lookupPrincipalByName("joe"); Files.setOwner(path, joe);
path
- ファイルを識別するファイル参照owner
- 新しいファイル所有者UnsupportedOperationException
- 関連付けられるファイルシステムが次をサポートしない場合: FileOwnerAttributeView
IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission
("accessUserInformation") を拒否するか、またはその checkWrite
メソッドがファイルへの書き込みアクセスを拒否する場合。FileSystem.getUserPrincipalLookupService()
, UserPrincipalLookupService
public static boolean isSymbolicLink(Path path)
入出力例外を、ファイルがシンボリックリンクでないケースと区別する必要がある場合は、readAttributes
メソッドを使ってファイル属性を読み取ったり、BasicFileAttributes.isSymbolicLink()
メソッドを使ってファイルタイプを判定したりできます。
true
。ファイルが存在しないか、シンボリックリンクでないか、またはファイルがシンボリックリンクかどうかを判断できない場合は false
。SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、その checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。public static boolean isDirectory(Path path, LinkOption... options)
options
配列を使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトでは、シンボリックリンクはたどられ、リンクの最終ターゲットのファイル属性が読み取られます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
入出力例外を、ファイルがディレクトリでないケースと区別する必要がある場合は、readAttributes
メソッドを使ってファイル属性を読み取ったり、BasicFileAttributes.isDirectory()
メソッドを使ってファイルタイプを判定したりできます。
path
- テストするファイルへのパスoptions
- シンボリックリンクの処理方法を示すオプションtrue
。ファイルが存在しないか、ディレクトリでないか、またはファイルがディレクトリかどうかを判断できない場合は false
。SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、その checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。public static boolean isRegularFile(Path path, LinkOption... options)
options
配列を使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトでは、シンボリックリンクはたどられ、リンクの最終ターゲットのファイル属性が読み取られます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
入出力例外を、ファイルが通常ファイルでないケースと区別する必要がある場合は、readAttributes
メソッドを使ってファイル属性を読み取ったり、BasicFileAttributes.isRegularFile()
メソッドを使ってファイルタイプを判定したりできます。
path
- ファイルへのパスoptions
- シンボリックリンクの処理方法を示すオプションtrue
。ファイルが存在しないか、通常ファイルでないか、またはファイルが通常ファイルかどうかを判断できない場合は false
。SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、その checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。public static FileTime getLastModifiedTime(Path path, LinkOption... options) throws IOException
options
配列を使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトでは、シンボリックリンクはたどられ、リンクの最終ターゲットのファイル属性が読み取られます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
path
- ファイルへのパスoptions
- シンボリックリンクの処理方法を示すオプションFileTime
。最終変更時間を示すタイムスタンプがそのファイルシステムによってサポートされていない場合は実装固有のデフォルトIOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、その checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。BasicFileAttributes.lastModifiedTime()
public static Path setLastModifiedTime(Path path, FileTime time) throws IOException
IOException
をスローすることによって、失敗する場合としない場合があります。
使用例: 最終変更時間を現在の時間に設定するとします。
Path path = ... FileTime now = FileTime.fromMillis(System.currentTimeMillis()); Files.setLastModifiedTime(path, now);
path
- ファイルへのパスtime
- 新しい最終変更時間IOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダの場合は、セキュリティーマネージャーの checkWrite
メソッドが呼び出されてファイルへの書き込みアクセスがチェックされますBasicFileAttributeView.setTimes(java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime)
public static long size(Path path) throws IOException
通常
ファイルでないファイルのサイズは実装固有であるため未指定です。path
- ファイルへのパスIOException
- 入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、その checkRead
メソッドがファイルへの読み取りアクセスを拒否する場合。BasicFileAttributes.size()
public static boolean exists(Path path, LinkOption... options)
options
パラメータを使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトではシンボリックリンクはたどられます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
このメソッドの結果がすぐに古くなることに注意してください。このメソッドがファイルの存在を示したとしても、後続のアクセスが成功する保証はありません。このメソッドを、セキュリティー保護を必要とするアプリケーションで使用するときは注意してください。
path
- テストするファイルへのパスoptions
- シンボリックリンクの処理方法を示すオプション。true
。ファイルが存在しないか、その存在を判断できない場合は false
。SecurityException
- デフォルトプロバイダの場合は、SecurityManager.checkRead(String)
が呼び出されてファイルへの読み取りアクセスがチェックされます。notExists(java.nio.file.Path, java.nio.file.LinkOption...)
public static boolean notExists(Path path, LinkOption... options)
options
パラメータを使用すると、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を指定できます。デフォルトではシンボリックリンクはたどられます。オプション NOFOLLOW_LINKS
が存在する場合は、シンボリックリンクはたどられません。
このメソッドが exists
メソッドを補足するものではないことに注意してください。ファイルが存在するかどうか判断できない場合は、どちらのメソッドも false
を返します。exists
メソッドと同様に、このメソッドの結果もすぐに古くなります。このメソッドがファイルの存在を示したとしても、そのあとのファイルを作成する試みが成功する保証はありません。このメソッドを、セキュリティー保護を必要とするアプリケーションで使用するときは注意してください。
path
- テストするファイルへのパスoptions
- シンボリックリンクの処理方法を示すオプションtrue
。ファイルが存在するか、その存在を判断できない場合は false
SecurityException
- デフォルトプロバイダの場合は、SecurityManager.checkRead(String)
が呼び出されてファイルへの読み取りアクセスがチェックされます。public static boolean isReadable(Path path)
このメソッドの結果がすぐに古くなることに注意してください。そのあとのファイルを読み取り用に開く試みが成功する (あるいは同じファイルにアクセスすることさえ) 保証はありません。このメソッドを、セキュリティー保護を必要とするアプリケーションで使用するときは注意してください。
path
- チェックするファイルへのパスtrue
。ファイルが存在しないか、Java 仮想マシンに十分な特権がないために読み取りアクセスが拒否されるか、またはアクセスを判断できない場合は false
SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
が呼び出されてファイルへの読み取りアクセスがチェックされます。public static boolean isWritable(Path path)
このメソッドの結果がすぐに古くなることに注意してください。そのあとのファイルを書き込み用に開く試みが成功する (あるいは同じファイルにアクセスすることさえ) 保証はありません。このメソッドを、セキュリティー保護を必要とするアプリケーションで使用するときは注意してください。
path
- チェックするファイルへのパスtrue
。ファイルが存在しないか、Java 仮想マシンに十分な特権がないために書き込みアクセスが拒否されるか、またはアクセスを判断できない場合は false
SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
が呼び出されてファイルへの書き込みアクセスがチェックされます。public static boolean isExecutable(Path path)
実行する
ための適切な特権があることを確認します。ディレクトリへのアクセスをチェックする場合はセマンティクスが異なる場合があります。たとえば、UNIX システムでは、実行アクセスのチェックを行うと、Java 仮想マシンに、ファイルまたはサブディレクトリにアクセスするためにディレクトリを検索する権限があることが確認されます。
実装によっては、このメソッドが、ファイルへの効果的なアクセスをチェックするために、ファイルアクセス権、アクセス制御リスト、またはその他のファイル属性を読み取る必要がある場合があります。その結果、このメソッドはほかのファイルシステムの操作に関して原始的でない可能性があります。
このメソッドの結果がすぐに古くなることに注意してください。そのあとのファイルを実行する試みが成功する (あるいは同じファイルにアクセスすることさえ) 保証はありません。このメソッドを、セキュリティー保護を必要とするアプリケーションで使用するときは注意してください。
path
- チェックするファイルへのパスtrue
。ファイルが存在しないか、Java 仮想マシンに十分な特権がないために実行アクセスが拒否されるか、またはアクセスを判断できない場合は false
SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkExec
が呼び出されてファイルへの実行アクセスがチェックされます。public static Path walkFileTree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor) throws IOException
このメソッドは、指定された開始ファイルをルートとしたファイルツリーを参照します。このファイルツリートラバーサルは、ファイルが検出されるごとに呼び出される、指定された FileVisitor
を使って深さ優先で行われます。ツリー内のアクセス可能なファイルがすべてビジットされたか、ビジットメソッドから TERMINATE
という結果が返されると、ファイルツリートラバーサルは完了します。ビジットメソッドが IOException
、キャッチされないエラー、または実行時例外のために終了した場合、そのトラバーサルは停止し、このメソッドの呼び出し元にそのエラーまたは例外が通知されます。
ファイルが検出されるごとに、このメソッドはその BasicFileAttributes
の読み取りを試みます。ファイルがディレクトリでない場合は、そのファイル属性で visitFile
メソッドが呼び出されます。入出力例外のためにそのファイル属性を読み取れない場合は、その入出力例外で visitFileFailed
メソッドが呼び出されます。
ファイルがディレクトリであり、そのディレクトリを開けなかった場合は、入出力例外で visitFileFailed
メソッドが呼び出され、その後、デフォルトではそのディレクトリの次の兄弟からファイルツリーの参照が再開されます。
ディレクトリが正常に開いた場合は、ディレクトリ内のエントリとその子孫がビジットされます。すべてのエントリがビジットされたか、ディレクトリの反復処理中に入出力エラーが発生した場合、そのディレクトリはクローズされ、ビジターの postVisitDirectory
メソッドが呼び出されます。デフォルトでは、そのディレクトリの次の兄弟からファイルツリーの参照が再開されます。
デフォルトでは、シンボリックリンクはこのメソッドで自動的にたどられません。options
パラメータに FOLLOW_LINKS
オプションが含まれている場合は、シンボリックリンクがたどられます。リンクをたどっているときに、ターゲットの属性を読み取れない場合、このメソッドはそのリンクの BasicFileAttributes
の取得を試みます。それらを読み取れる場合は、そのリンクの属性で visitFile
メソッドが呼び出されます (それ以外の場合は、前述のように visitFileFailed
メソッドが呼び出されます)。
options
パラメータに FOLLOW_LINKS
オプションが含まれている場合、このメソッドはサイクルを検出できるようにビジットされたディレクトリを追跡します。サイクルは、ディレクトリの上位ディレクトリの中にエントリが存在する場合に発生します。サイクルの検出を行うには、ディレクトリのファイルキー
を記録します。ファイルキーが利用できない場合は、isSameFile
メソッドを呼び出して、ディレクトリが上位ディレクトリと同じファイルかどうかを判定します。サイクルが検出されると、それは入出力エラーとして扱われ、FileSystemLoopException
のインスタンスで visitFileFailed
メソッドが呼び出されます。
maxDepth
パラメータは、ビジットするディレクトリレベルの最大数です。値 0
は、セキュリティーマネージャーに拒否されないかぎり、開始ファイルのみがビジットされることを意味します。値 MAX_VALUE
を使用すると、すべてのレベルがビジットされるように指定できます。visitFile
メソッドは、基本ファイル属性を読み取れない場合を除き、maxDepth
で検出されるすべてのファイル (ディレクトリを含む) に対して呼び出されます。基本ファイル属性を読み取れない場合は、visitFileFailed
メソッドが呼び出されます。
ビジターから null
という結果が返された場合は、NullPointerException
がスローされます。
セキュリティーマネージャーがインストールされていて、ファイル (またはディレクトリ) へのアクセスを拒否する場合、それは無視され、ビジターはそのファイル (またはディレクトリ) に対して呼び出されません。
start
- 開始ファイルoptions
- トラバースを構成するオプションmaxDepth
- ビジットするディレクトリレベルの最大数visitor
- 各ファイルに対して呼び出すファイルビジターIllegalArgumentException
- maxDepth
パラメータが負の値の場合SecurityException
- セキュリティーマネージャーが開始ファイルへのアクセスを拒否する場合。デフォルトプロバイダの場合は、checkRead
メソッドが呼び出されてディレクトリへの読み取りアクセスがチェックされます。IOException
- ビジターメソッドによって入出力エラーがスローされた場合public static Path walkFileTree(Path start, FileVisitor<? super Path> visitor) throws IOException
このメソッドの呼び出しは、式を評価することと同様に動作します。
つまり、それはシンボリックリンクをたどらず、ファイルツリーのすべてのレベルをビジットします。walkFileTree(start, EnumSet.noneOf(FileVisitOption.class), Integer.MAX_VALUE, visitor)
start
- 開始ファイルvisitor
- 各ファイルに対して呼び出すファイルビジターSecurityException
- セキュリティーマネージャーが開始ファイルへのアクセスを拒否する場合。デフォルトプロバイダの場合は、checkRead
メソッドが呼び出されてディレクトリへの読み取りアクセスがチェックされます。IOException
- ビジターメソッドによって入出力エラーがスローされた場合public static BufferedReader newBufferedReader(Path path, Charset cs) throws IOException
BufferedReader
を返します。ファイルから取得したバイトは、指定された文字セットを使用して文字にデコードされます。読み取りはファイルの最初から始まります。
ファイルから読み取る Reader
メソッドは、形式が間違っているか、またはマップできないバイトシーケンスが読み取られた場合に IOException
をスローします。
path
- ファイルへのパスcs
- デコードに使用する文字セットIOException
- ファイルのオープン中に入出力エラーが発生した場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされます。readAllLines(java.nio.file.Path, java.nio.charset.Charset)
public static BufferedWriter newBufferedWriter(Path path, Charset cs, OpenOption... options) throws IOException
BufferedWriter
を返します。options
パラメータはファイルを作成または開く方法を指定します。オプションがない場合、このメソッドは CREATE
、TRUNCATE_EXISTING
、および WRITE
オプションがあるかのように機能します。つまり、書き込み用にファイルを開きます (存在しない場合は作成し、存在する場合は最初に既存の通常ファイル
をサイズ 0
に切り詰めます)。
テキストを書き込む Writer
メソッドは、指定された文字セットを使ってテキストをエンコードできない場合に IOException
をスローします。
path
- ファイルへのパスcs
- エンコードに使用する文字セットoptions
- ファイルを開く方法を指定するオプションIOException
- ファイルのオープンまたは作成中に入出力エラーが発生した場合UnsupportedOperationException
- 未サポートのオプションが指定された場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されてファイルへの書き込みアクセスがチェックされます。write(Path,Iterable,Charset,OpenOption[])
public static long copy(InputStream in, Path target, CopyOption... options) throws IOException
デフォルトでは、ターゲットファイルがすでに存在するか、シンボリックリンクである場合、コピーは失敗します。REPLACE_EXISTING
オプションが指定されていて、ターゲットファイルがすでに存在する場合は、それが空でないディレクトリでなければ置換されます。ターゲットファイルが存在し、それがシンボリックリンクである場合は、そのシンボリックリンクが置換されます。このリリースでは、REPLACE_EXISTING
オプションは、このメソッドでサポートされる必要のある唯一のオプションです。将来のリリースでは、追加のオプションがサポートされる可能性があります。
入力ストリームからの読み取り中またはファイルへの書き込み中に入出力エラーが発生する場合は、ターゲットファイルが作成されたあとや、数バイトが読み取られたり、書き込まれたりしたあとでそうなることがあります。その結果、入力ストリームがストリームの終わりに配置されず、整合性のない状態になる可能性があります。入出力エラーが発生した場合は入力ストリームをただちにクローズすることを強くお勧めします。
このメソッドは、入力ストリームからの読み取り (またはファイルへの書き込み) を無期限にブロックすることがあります。コピー中に入力ストリームが非同期クローズされたり、スレッドの割り込みが発生したりした場合の動作は、入力ストリームやファイルシステムプロバイダによって大きく異なるため、特定できません。
使用例:Web ページを取得し、それをファイルを保存するとします。
Path path = ... URI u = URI.create("http://java.sun.com/"); try (InputStream in = u.toURL().openStream()) { Files.copy(in, path); }
in
- 読み取り元の入力ストリームtarget
- ファイルへのパスoptions
- コピーをどのように実行するべきかを指定するオプションIOException
- 読み取りまたは書き込み中に入出力エラーが発生した場合。FileAlreadyExistsException
- ターゲットファイルは存在するけれども、REPLACE_EXISTING
オプションが指定されていないために置換できない場合 (オプションの固有例外)DirectoryNotEmptyException
- REPLACE_EXISTING
オプションが指定されているけれども、空でないディレクトリであるために置換できない場合 (オプションの固有例外) *UnsupportedOperationException
- サポートされていないコピーオプションが options
に含まれる場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されてファイルへの書き込みアクセスがチェックされます。REPLACE_EXISTING
オプションが指定されている場合は、セキュリティーマネージャーの checkDelete
メソッドが呼び出されて、既存のファイルを削除できるかどうかがチェックされます。public static long copy(Path source, OutputStream out) throws IOException
ファイルからの読み取り中または出力ストリームへの書き込み中に入出力エラーが発生する場合は、数バイトが読み取られたり、書き込まれたりしたあとでそうなることがあります。その結果、出力ストリームが整合性のない状態になる可能性があります。入出力エラーが発生した場合は出力ストリームをただちにクローズすることを強くお勧めします。
このメソッドは、出力ストリームへの書き込み (またはファイルからの読み取り) を無期限にブロックすることがあります。コピー中に出力ストリームが非同期クローズされたり、スレッドの割り込みが発生したりした場合の動作は、入力ストリームやファイルシステムプロバイダによって大きく異なるため、特定できません。
指定された出力ストリームが Flushable
である場合は、バッファーに入っている出力をフラッシュするために、このメソッドの完了後に、その flush
メソッドを呼び出すことが必要になることがあります。
source
- ファイルへのパスout
- 書き込み先の出力ストリームIOException
- 読み取りまたは書き込み中に入出力エラーが発生した場合。SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされます。public static byte[] readAllBytes(Path path) throws IOException
このメソッドが、すべてのバイトを 1 つのバイト配列に読み取ると都合が良い簡単なケースで使用するものであることに注意してください。大きなファイルを読み取ることを目的とはしていません。
path
- ファイルへのパスIOException
- ストリームからの読み取り中に入出力エラーが発生した場合OutOfMemoryError
- 必要なサイズの配列を割り当てられない場合 (ファイルが 2GB
を超えるなど)SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされます。public static List<String> readAllLines(Path path, Charset cs) throws IOException
このメソッドは、次を行末記号と認識します。
\u000D
と \u000A
、キャリッジリターンと改行 \u000A
、改行 \u000D
、キャリッジリターン 将来のリリースでは、追加の Unicode 行末記号が認識される可能性があります。
このメソッドが、すべての行を 1 回の操作で読み取ると都合が良い簡単なケースで使用するものであることに注意してください。大きなファイルを読み取ることを目的とはしていません。
path
- ファイルへのパスcs
- デコードに使用する文字セットList
として読み取られた行。その List
が変更可能であるかどうかは実装に依存しているため、特定できないIOException
- ファイルからの読み取り中に入出力エラーが発生した場合、または形式が間違っているか、マップできないバイトシーケンスが読み取られた場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkRead
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされます。newBufferedReader(java.nio.file.Path, java.nio.charset.Charset)
public static Path write(Path path, byte[] bytes, OpenOption... options) throws IOException
options
パラメータはファイルを作成または開く方法を指定します。オプションがない場合、このメソッドは CREATE
、TRUNCATE_EXISTING
、および WRITE
オプションがあるかのように機能します。つまり、書き込み用にファイルを開きます (存在しない場合は作成し、そうでない場合は最初に既存の通常ファイル
をサイズ 0
に切り詰めます)。バイト配列内のすべてのバイトがファイルに書き込まれます。このメソッドは、すべてのバイトが書き込まれた (あるいは、入出力エラーまたは他の実行時例外がスローされた) ときに必ずそのファイルがクローズされるようにします。入出力エラーが発生した場合は、ファイルの作成または切り詰めが行われたあと、またはファイルに数バイト書き込まれたあとに行われる場合があります。
使用例:デフォルトでは、このメソッドは新しいファイルを作成するか、既存のファイルに上書きします。その代わりに、バイトを既存のファイルに追加するとします。
Path path = ... byte[] bytes = ... Files.write(path, bytes, StandardOpenOption.APPEND);
path
- ファイルへのパスbytes
- 書き込むバイトを含むバイト配列options
- ファイルを開く方法を指定するオプションIOException
- ファイルへの書き込み中またはファイルの作成中に入出力エラーが発生した場合UnsupportedOperationException
- 未サポートのオプションが指定された場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されてファイルへの書き込みアクセスがチェックされます。public static Path write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options) throws IOException
line.separator
で定義されているように、各行の終端がプラットフォームの行区切り文字で表されるファイルに順々に書き込まれます。文字は、指定された文字セットを使ってバイトにエンコードされます。
options
パラメータはファイルを作成または開く方法を指定します。オプションがない場合、このメソッドは CREATE
、TRUNCATE_EXISTING
、および WRITE
オプションがあるかのように機能します。つまり、書き込み用にファイルを開きます (存在しない場合は作成し、そうでない場合は最初に既存の通常ファイル
をサイズ 0
に切り詰めます)。このメソッドは、すべての行が書き込まれた (あるいは、入出力エラーまたは他の実行時例外がスローされた) ときに必ずそのファイルがクローズされるようにします。入出力エラーが発生した場合は、ファイルの作成または切り詰めが行われたあと、またはファイルに数バイト書き込まれたあとに行われる場合があります。
path
- ファイルへのパスlines
- 文字シーケンスすべてについて反復処理を行うオブジェクトcs
- エンコードに使用する文字セットoptions
- ファイルを開く方法を指定するオプションIOException
- ファイルへの書き込み中またはファイルの作成中に入出力エラーが発生したか、指定された文字セットを使ってテキストをエンコードできない場合UnsupportedOperationException
- 未サポートのオプションが指定された場合SecurityException
- デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、checkWrite
メソッドが呼び出されてファイルへの書き込みアクセスがチェックされます。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.