どのようにtmpfile()
が機能するため、ファイル名が必要な場合は使用できません。しかし、私はすでに一時ファイルを処理するためのモジュールを作成しています。条件付きコンパイルを使用して、一時ディレクトリを見つける方法を決定します。ウィンドウでは、%TMP%環境変数を使用します。 Posixでは、/ tmp /を使用します。
このコードはWTFPLの下でライセンスされているので、あなたはそれを使って何でもできます。
module TemporaryFiles;
import std.conv,
std.random,
std.stdio;
version(Windows) {
import std.process;
}
private static Random rand;
/// Returns a file with the specified filename and permissions
public File getTempFile(string filename, string permissions) {
string path;
version(Windows) {
path = getenv("TMP") ~ '\\';
} else version(Posix) {
path = "/tmp/";
// path = "/var/tmp/"; // Uncomment to survive reboots
}
return File(path~filename, permissions);
}
/// Returns a file opened for writing, which the specified filename
public File getTempFile(string filename) {
return getTempFile(filename, "w");
}
/// Returns a file opened for writing, with a randomly generated filename
public File getTempFile() {
string filename = to!string(uniform(1L, 1000000000L, rand)) ~ ".tmp";
return getTempFile(filename, "w");
}
これを使用するには、必要な引数を指定してgetTempFile()を呼び出します。デフォルトでは書き込み許可になります。
「ランダムに生成されたファイル名」は、コンパイル時にシードが設定されるため、本当にランダムではありません。