#目的
- 任意のディレクトリにファイルを作成したい。
- 複数作りたいので、ファイル名は被って欲しくない。
- 作成したファイルは一時的に利用して、破棄したい。
#微妙なやり方
ファイル名を一意にするために、現在のミリ秒を利用した例。
勿論、確実にかぶらないとは言い切れない。。。
// 現在のミリ秒を取得
long millTime = System.currentTimeMillis();
String fileName = "tmp_" + millTime + ".txt";
File file = new File(fileName);
#素敵なやり方
FilesクラスのcreateTempFileメソッドを利用する。(Java7以降)
Files.createTempFile(Paths.get("任意のディレクトリ"), "prefix", "suffix");
以下は、一時ファイルを作成し、書き込んだのち、削除する例。
File file = null;
try {
Path tmpPath = Files.createTempFile(Paths.get("/tmp"), "prefix", ".suffix");
file = tmpPath.toFile();
// ファイルに書き込み
FileWriter fw = new FileWriter(file, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
pw.write("こんにゃく");
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
// ファイルを削除
if (file != null && file.exists()) {
file.delete();
}
}
Java6までの場合は、FileクラスのcreateTempFileメソッドを使えばできる。
参考
https://docs.oracle.com/javase/jp/8/docs/api/java/io/File.html#createTempFile-java.lang.String-java.lang.String-java.io.File-