Javaでファイル操作に使用するFileクラスは、さまざまな機能があります。
この記事では、ファイル操作で必要な、
・ファイルやディレクトリの作り方
・ファイルに文字列を書き込む方法
・ファイルをコピーする方法
という基本的な内容から、
・ファイル作成時の注意点
・ファイルの更新日付を取得する方法
などの応用的な使い方に関しても解説していきます。
今回はそんな悩みを解決するために、ファイルの作成方法について、わかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
ファイルやディレクトリを作成する
ここでは、ファイルやディレクトリを作成する方法を紹介します。
ファイルの作成方法
ファイルを作成するには、FileクラスのcreateNewFileメソッドを使用します。
createNewFileメソッドは、boolean型の値を返します。
public boolean createNewFile()
以下にcreateNewFileメソッドを使用した、ファイルの作成方法を記述します。
import java.io.File; import java.io.IOException; public class fileClass{ public fileClass() throws IOException{ File file = new File("/Users/Shared/java/java.txt"); //createNewFileメソッドを使用してファイルを作成する if (file.createNewFile()){ System.out.println("ファイル作成成功"); }else{ System.out.println("ファイル作成失敗"); } } }
実行結果 ファイル作成成功
サンプルではFileクラスのインスタンスに絶対パスでファイル名を指定し、createNewFileメソッドでファイルを作成しています。
すでに同名のファイルが存在する場合は、ファイル作成に失敗してしまいますのでfalseを返します。
また、指定先のディレクトリが見つからなかった場合、“IOException”の例外が発生しますので注意が必要です。
ディレクトリの作成方法
ディレクトリを作成するには、Fileクラスのmkdirメソッドを使用します。
mkdirメソッドは、boolean型の値を返します。
public boolean mkdir()
以下にmkdirメソッドを使用した、ディレクトリの作成方法を記述します。
import java.io.File; import java.io.IOException; public class fileClass{ public fileClass() throws IOException{ File dir = new File("/Users/Shared/java/"); //mkdirを使用してディレクトリを作成する dir.mkdir(); } }
サンプルではFileクラスのインスタンスに絶対パスでディレクトリを指定し、mkdirメソッドでディレクトリを作成しています。
ディレクトリ作成については、以下の記事でも詳しく解説しています。
ファイルとディレクトリの存在を確認する方法
Fileクラスは、指定したファイルが存在しないと例外が発生するため、事前に目的のファイルが存在するか、確認しておいたほうが良いと言えます。
ファイルやフォルダの存在有無を確認するにはexistsメソッドを使用します。
existsメソッドはboolean型の値を返します。
public boolean exists()
existsメソッドは以下のように記述します。
File file = new File("ファイル名"); file. exists();
existsメソッドの使い方や詳細、Java7で追加されたjava.nio.file.Filesクラスのexistsメソッドの使い方については、以下の記事で詳しく解説しています!
ファイル、ディレクトリ作成時の注意点
ファイルを作成するcreateNewFileメソッドは、前述したように”IOException”の例外が発生する可能性があります。
特にファイル操作は、指定したパスやファイルが見つからないなどの問題が発生しやすく、例外が起こりやすいと言えます。
そのため、例外が起こりやすいメソッドは、必ず例外処理を記述しなければいけません。
紹介したサンプルのように、fileClass()のあとにIOExceptionのスロー宣言をするか、処理をtry~catch文の中に記述する必要があります。
public fileClass() throws IOException
ファイル書き込み操作
ファイルに文字列を書き込むためには、FileWriterクラスと、PrintWriterクラスを使用します。
ファイルに書き込むためのFileWriterクラスは、Fileクラス同様にインスタンスに絶対パスか、相対パスでファイル名を指定する必要があります。
FileWriter filewriter = new FileWriter("ファイルパス/ファイル名")
PrintWriterクラスは、ファイル出力用のBufferedWriterクラスを拡張する形で使用します。
FileWriter file = new FileWriter("ファイルパス/ファイル名"); PrintWriter pw = new PrintWriter(new BufferedWriter(file));
ファイルに文字列を書き込む方法
ファイルに文字列を書き込むためには、PrintWriterクラスのprintlnメソッドを使用します。
以下に、ファイルに文字列を書き込む方法を記述します。
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class fileClass{ public fileClass() throws IOException{ // FileWriterクラスを使用する FileWriter file = new FileWriter("/Users/Shared/java/java.txt"); // PrintWriterクラスを使用する PrintWriter pw = new PrintWriter(new BufferedWriter(file)); //ファイルに書き込む pw.println("apple"); pw.println("orange"); pw.println("melon"); //ファイルを閉じる pw.close(); } }
サンプルでは、FileWriterクラスのインスタンスに絶対パスを指定して、オブジェクトを生成しています。
FileWriterクラスは、ファイルが存在しない場合は新規に作成します。
次にPrintWriterクラスをファイル出力用クラスBufferedWriterのインスタンスに、FileWriterクラスを指定して、オブジェクトを作成しています。
ファイル書き込み時は、PrintWriterクラスのprintlnメソッドを使用して、引数に書き込む文字列を指定します。
ファイル操作が完了したら、最後は必ずcloseメソッドを指定して、ファイル操作のリソースを解放します。
ファイルをコピーする方法
ファイルをコピーするためには、java.io.FileクラスのFileInputStreamクラスとFileOutputStreamクラスを使用する方法があります。
また、FileChannelクラスのtransferToメソッドを使用することでもファイルをコピーすることが可能です。
transferTo(long position, long count, WritableByteChannel target)
ファイルをコピーする詳細については、以下の記事で詳しく解説しています!
ファイルの更新日時を取得する
ファイルの更新日付を取得するためには、FileクラスのlastModifiedメソッドを使用します。
lastModifiedメソッドは、Long型の値を返します。
Long lastModified()
以下に更新日付を取得する方法を記述します。
import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; public class fileClass{ public fileClass() throws IOException{ //ファイルの更新日時を取得する File file = new File("/Users/Shared/java/java.txt"); //フォーマットを指定する SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //ファイルの更新日時を取得する Long update = file.lastModified(); //指定したフォーマットで書式を整形する String updateStr = sdf.format(update); System.out.println("更新日:" + updateStr); } }
実行結果 更新日:2017/03/30 20:25:00
サンプルではFileクラスで指定したファイルに対して、lastModifiedメソッドを使用しています。
また、SimpleDateFormatクラスを使用すれば、実行結果のとおり、わかりやすい形式のフォーマットを指定することができます。
フォーマットについては、以下の記事で詳しく解説しています。
Fileクラスについてもっと詳しく知りたい方へ
Fileクラスのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!
まとめ
ここでは、ファイルを作成する方法や、ファイルに書き込む方法について詳細に説明しました。
ファイルを作成したり、書き込んだりする処理は、使用する機会が多いと思います。
もし、ファイルを作成する方法を忘れてしまったら、この記事を思い出してくださいね!