【Java】一時ディレクトリ取得/作成・一時ファイル作成

■ 一時ディレクトリ取得

例えば、Linuxの「/tmp」や Windowsの「C:\Users\User1\AppData\Local\Temp\」
 * System.getProperty("java.io.tmpdir") で取得できる

■ 一時ディレクトリ作成

 * Files.createDirectories() を使う
https://docs.oracle.com/javase/jp/7/api/java/nio/file/Files.html

サンプル

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Sample {
  public static void main(String[] args) {
    String tmpDirectory = System.getProperty("java.io.tmpdir");
    System.out.println("java.io.tmpdir = " + tmpDirectory);


    try {
      Path tempPath = Files.createTempDirectory(Paths.get(tmpDirectory), "prefix_");
      System.out.println("tempPath.toString() =  " + tempPath.toString());
    } catch (IOException ex) {
      System.err.println(ex.getMessage());
    }
  }
}
出力結果
java.io.tmpdir = C:\Users\User1\AppData\Local\Temp\
tempPath.toString() =  C:\Users\User1\AppData\Local\Temp\prefix_2530568906699906177

■ 一時ファイル作成

 *  java.io.File.createTempFile() を使う
or
 *  java.nio.file.Files.createTempFile() を使う

サンプル

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

public class Sample {
  public static void main(String[] args) {
    System.out.println("java.io.tmpdir = " + System.getProperty("java.io.tmpdir"));

    try {
      File tempFile = File.createTempFile("pre", ".temp");
      System.out.println("tempFile.getPath() =  " + tempFile.getPath());
    } catch (IOException ex) {
      System.err.println(ex.getMessage());
    }

    try {
      Path tempPath = Files.createTempFile("pre", ".temp");
      System.out.println("tempPath.toString(1) =  " + tempPath.toString());
    } catch (IOException ex) {
      System.err.println(ex.getMessage());
    }
    
    try {
      Path tempPath = Files.createTempFile(null, null);
      System.out.println("tempPath.toString(2) =  " + tempPath.toString());
    } catch (IOException ex) {
      System.err.println(ex.getMessage());
    }
  }
}
出力結果
java.io.tmpdir = C:\Users\User1\AppData\Local\Temp\
tempFile.getPath() =  C:\Users\User1\AppData\Local\Temp\pre4189128725356324852.temp
tempPath.toString(1) =  C:\Users\User1\AppData\Local\Temp\pre8850011417096134165.temp
tempPath.toString(2) =  C:\Users\User1\AppData\Local\Temp\8968596909994876059.tmp

参考文献

http://hensa40.cutegirl.jp/archives/787
https://qiita.com/sbydik/items/7a0967187eacbd839c51

関連記事

Java のファイルの扱い

https://blogs.yahoo.co.jp/dk521123/37174799.html