こんにちは!ISAMU(@burlesca_isa)です!
今回の対象読者は
- Javaのファイル操作について知りたい方
ファイル操作の前編の記事はこちら
[nlink url=”https://kajirinyo.com/java_course_35/”]ファイル操作について解説します
前編はファイル作成に必要な知識とディレクトリ作成までを解説しました。
後編は
- ファイル作成
- ファイルコピー
- ファイル移動とファイル名変更
- ファイル削除
を解説します。
ファイル関係で使用するクラス
ファイルの作成で必要なクラスは
- Pathインターフェース
- Pathsクラス
- Filesクラス
です。
PathインターフェースとPathsクラスは前編で説明しました。
Filesクラスはディレクトリの作成にも使いましたが、
ファイルの作成にも使用します。
ファイル作成
構文
Files.createFile(Path path);
ファイルの作成は、
FilesクラスのcreateFileメソッドを使用します。
引数にはPathクラスのインスタンスを渡します。
注意したいのが、
ファイルを作成するディレクトリに
すでに同じ名前のファイルが存在していた場合には例外が発生することです。
ファイルのコピー
構文
Files.copy(Path path1, Path path2);
第一引数にコピー元、第2引数にコピー先のパスを指定します。
コピー先にすでに同じ名前のファイルが存在していた場合は例外が発生します。
オプションを指定すればファイルを上書きすることができ例外の発生は起こりません。
オプションは第3引数に指定します。
copyメソッドのオプション
- StandardCopyOption.REPLACE_EXISTING ファイルが存在する場合は上書きする
- StandardCopyOption.COPY_ATTRIBUTES・・・属性を新しいファイルにコピーする
ファイル移動とファイル名変更
構文
Files.move(Path path1, Path path2);
ファイル移動とファイル名変更はFiles.moveメソッドを使用します。
名前の変更は第2引数のファイル名を変更して実行します。
moveメソッドも移動先に同じ名前のファイルが存在していた場合に例外が発生します。
第3引数にオプションを指定することで解決できます。
moveメソッドのオプション
- StandardCopyOption.REPLACE_EXISTING・・・ファイルが存在する場合は上書きする
- StandardCopyOption.ATOMIC_MOVE・・・移動が完了するまでアクセスできない
ATOMIC_MOVEオプションは時間がかかるファイル移動のときに同時に動いているプログラムがアクセスすることを防ぎます。
ファイル削除
構文
①Files.delete(Path path);
②Files.deleteIfExists(Path path);
ファイル削除のメソッドは2種類あります。
②のdeleteIfExistsは、
ファイルの存在チェックを行い、存在していれば削除します。
①deleteメソッドはファイルが存在していない場合は例外が発生するため、
Files.Existsメソッドでファイルの存在をチェックしてからdeleteメソッドで削除します。
この動きを一つのメソッドで行えるのがdeleteIfExistsメソッドです。