Javaで一時ファイル(テンポラリファイル)を作成する方法
プログラムの実行中に、一時的な情報を保存するためにその場で一時ファイルを作成し、後から削除したいケースはよくあります。
Javaでは、Files.createTempFile() メソッドを使用することで、簡単に一時ファイルを作成できます。
一時ファイルの作成
次の例では、Files.createTempFile(prefix, suffix) を使って一時ファイルを作成しています。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class CreateTempFile {
public static void main(String[] args) {
try {
// 一時ファイルを作成
Path tempFile = Files.createTempFile("temp-", ".txt");
System.out.println("Temp file : " + tempFile);
} catch (IOException e) {
e.printStackTrace();
}
}
}
実行結果:
Temp file : /var/folders/nyckvw0000gr/T/temp-2129139085984899264.txt
この例では、「temp-」がプレフィックス(接頭辞)、「.txt」がサフィックス(接尾辞)として機能します。
ポイント: デフォルトでは、Javaはシステムの一時ディレクトリ内に一時ファイルを作成します。この一時ディレクトリのパスは、System.getProperty("java.io.tmpdir") で取得できます。
サフィックスにnullを指定した場合
サフィックスに null を渡すと、一時ファイルは .tmp 拡張子付きで作成されます。
Path tempFile = Files.createTempFile("prefix-", null);
System.out.println("Temp file : " + tempFile);
// Temp file : /var/folders/nyckvw0000gr/T/prefix-17184288103181464441.tmp
拡張子なしの一時ファイルを作成する場合
サフィックスに空文字列を指定すると、拡張子のない一時ファイルが作成されます。
Path tempFile = Files.createTempFile(null, "");
System.out.println("Temp file : " + tempFile);
// Temp file : /var/folders/nyckvw0000gr/T/1874152090427250275
指定したディレクトリに一時ファイルを作成する
Javaに自動的にディレクトリを選択させる代わりに、一時ファイルの作成場所を明示的に指定することも可能です。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateTempFile {
public static void main(String[] args) {
try {
Path path = Paths.get("target/tmp/");
// 指定したディレクトリに一時ファイルを作成
Path tempFile = Files.createTempFile(path, null, ".log");
System.out.println("Temp file : " + tempFile);
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意: 一時ファイルを書き込むには、指定したディレクトリがあらかじめ存在している必要があります。ディレクトリが存在しない場合は IOException がスローされるため、必要に応じて Files.createDirectories() などで先に作成しておきましょう。
一時ファイルを作成してデータを書き込む
次のコード例では、一時ファイルを作成した後、そこにテキストを書き込んでいます。
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateTempFile {
public static void main(String[] args) {
try {
Path path = Paths.get("target/tmp/");
// 指定したディレクトリに一時ファイルを作成
Path tempFile = Files.createTempFile(path, null, ".log");
System.out.println("Temp file : " + tempFile);
// ファイルに1行書き込む
Files.write(tempFile, "Hello From Temp File\n".getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
}
}
このように Files.write() メソッドを使えば、作成した一時ファイルへ簡単にデータを書き込めます。処理が完了した後は、Files.delete() や deleteOnExit() を使って一時ファイルを削除すると、ディスク容量を無駄に消費せずに済みます。
- Javaでファイルに書き込む方法
- Javaでファイルを作成する方法
- Javaでファイルを読み込む方法
-
Javaでディレクトリ階層を作成する方法|mkdirs()メソッドの使い方を解説
java.ioパッケージに含まれるFileクラスは、システム上のファイルやディレクトリ(パス名)を表現するためのクラスです。このクラスには、ファイルやディレクトリに対してさまざまな操作を行うためのメソッドが数多く用意されています。 mkdir()メソッドを使用すると、現在のFileオブジェクトが表すパスにディレクトリを1つ作成できます。ただし、このメソッドは親ディレクトリが存在しない場合には失敗するという点に注意が必要です。 ディレクトリ階層を作成するには? 複数階層からなる新しいディレクトリ構造を一括で作成したい場合は、同じFileクラスのmkdirs()メソッドを使用します。このメソッドは
-
JavaでJSONファイルを作成する方法をわかりやすく解説
JSON(JavaScript Object Notation)は、人間が読みやすい形式でデータを交換するために設計された、軽量なテキストベースのオープン標準フォーマットです。JSONの記法は、C、C++、Java、Python、Perlなど、多くのプログラミング言語に精通したプログラマーにとって馴染み深いものとなっています。 JSONドキュメントのサンプル 以下は、書籍情報を格納した典型的なJSONドキュメントの例です。 { book: [ { id: 01, language: Java, ed