Java : StandardCopyOption (ファイルコピー) - API使用例
StandardCopyOption (Java SE 19 & JDK 19) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。
概要
StandardCopyOption は、Files の copy メソッド、move メソッドに指定して、ファイルのコピー・移動の動作を制御します。
final var source = Path.of("R:", "java-work", "src.txt");
System.out.println(source); // R:\java-work\src.txt
final var target = Path.of("R:", "java-work", "dst.txt");
System.out.println(target); // R:\java-work\dst.txt
Files.writeString(source, "abc");
Files.writeString(target, "XYZ");
System.out.println(Files.readString(source)); // abc
System.out.println(Files.readString(target)); // XYZ
try {
System.out.println("-- copy --");
Files.copy(source, target);
} catch (FileAlreadyExistsException e) {
System.out.println("FileAlreadyExistsException! : " + e.getMessage());
}
// 結果
// ↓
//-- copy --
//FileAlreadyExistsException! : R:\java-work\dst.txt
System.out.println(Files.readString(source)); // abc
System.out.println(Files.readString(target)); // XYZ
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
System.out.println(Files.readString(source)); // abc
System.out.println(Files.readString(target)); // abc
注意
- 基本は Windows 10 で実行した結果となります。
- 一部 POSIX 環境でないと確認できないものは、Linux で実行しています。
列挙型定数
ATOMIC_MOVE
final var source = Path.of("D:", "java-work", "src.txt");
System.out.println(source); // D:\java-work\src.txt
final var target = Path.of("R:", "java-work", "dst.txt");
System.out.println(target); // R:\java-work\dst.txt
Files.writeString(source, "abc");
System.out.println(Files.readString(source)); // abc
System.out.println(Files.exists(target)); // false
try {
System.out.println("-- move --");
Files.move(source, target, StandardCopyOption.ATOMIC_MOVE);
} catch (AtomicMoveNotSupportedException e) {
System.out.println("AtomicMoveNotSupportedException!");
}
// 結果
// ↓
//-- move --
//AtomicMoveNotSupportedException!
System.out.println(Files.readString(source)); // abc
System.out.println(Files.exists(target)); // false
Files.move(source, target);
System.out.println(Files.exists(source)); // false
System.out.println(Files.readString(target)); // abc
COPY_ATTRIBUTES
// このコード例は Linux で実行しています。
final var source = Path.of("src.txt");
System.out.println(source); // src.txt
final var target1 = Path.of("dst1.txt");
System.out.println(target1); // dst1.txt
final var target2 = Path.of("dst2.txt");
System.out.println(target2); // dst2.txt
Files.createFile(source);
Files.setLastModifiedTime(source, FileTime.fromMillis(0));
Files.copy(source, target1);
Files.copy(source, target2, StandardCopyOption.COPY_ATTRIBUTES);
System.out.println(Files.getLastModifiedTime(source)); // 1970-01-01T00:00:00Z
System.out.println(Files.getLastModifiedTime(target1)); // 2022-12-08T09:24:58.58665956Z
System.out.println(Files.getLastModifiedTime(target2)); // 1970-01-01T00:00:00Z
REPLACE_EXISTING
final var source = Path.of("R:", "java-work", "src.txt");
System.out.println(source); // R:\java-work\src.txt
final var target = Path.of("R:", "java-work", "dst.txt");
System.out.println(target); // R:\java-work\dst.txt
Files.writeString(source, "abc");
Files.writeString(target, "XYZ");
System.out.println(Files.readString(source)); // abc
System.out.println(Files.readString(target)); // XYZ
try {
System.out.println("-- copy --");
Files.copy(source, target);
} catch (FileAlreadyExistsException e) {
System.out.println("FileAlreadyExistsException! : " + e.getMessage());
}
// 結果
// ↓
//-- copy --
//FileAlreadyExistsException! : R:\java-work\dst.txt
System.out.println(Files.readString(source)); // abc
System.out.println(Files.readString(target)); // XYZ
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
System.out.println(Files.readString(source)); // abc
System.out.println(Files.readString(target)); // abc
メソッド
static StandardCopyOption valueOf (String name)
final var ret1 = StandardCopyOption.valueOf("REPLACE_EXISTING");
System.out.println(ret1); // REPLACE_EXISTING
final var ret2 = StandardCopyOption.valueOf("COPY_ATTRIBUTES");
System.out.println(ret2); // COPY_ATTRIBUTES
static StandardCopyOption[] values ()
for (final var value : StandardCopyOption.values()) {
System.out.println(value);
}
// 結果
// ↓
//REPLACE_EXISTING
//COPY_ATTRIBUTES
//ATOMIC_MOVE
Enumで宣言されたメソッド
clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
「Java API 使用例 : Enum」をご参照ください。