の作成方法を教えてください、温度ファイル名にはGimp用ドキュメ?
質問
あげるデータをファイルからその他の関数はファイルとして入力します。
の作成方法を教えてください独自のファイル名にはGimp用ドキュメ?
はそのようなunix"tempfile"がありますか?
解決
いかに実ファイル?その場合の安全を使用した方法があり、ミックスの番号から現在のホスト名のコンピュータをする場合には、複数のノードを出すことも).
のようなもの:
1> {A,B,C}=now().
{1249,304278,322000}
2> N=node().
nonode@nohost
3> lists:flatten(io_lib:format("~p-~p.~p.~p",[N,A,B,C])).
"nonode@nohost-1249.304278.322000"
4>
他のヒント
TMP = lib:nonl(os:cmd(" mktemp"))を使用することもできます。
またはできること
erlang:phash2(make_ref())
迅速かつ簡単な一意の識別子。目的に応じて十分な最大2 ^ 82コールに対して一意です。これは、使用するノード名でタイムスタンプをフォーマットするよりも簡単です。
後期回答:スクラッチディレクトリをサポートしているtest_serverモジュールに注目しました。一見の価値あり
またこの問題--と私のユーザーはコミットメント-ラインをWindowsおよびLinuxシステムでのこと lib:nonl(os:cmd("mktemp"))
方法はないです。
それでもかったのでは、と mktemp/1
を返す関数ファイル名に使用できるも mktemp_dir/1
る機能を返しますディレクトリを作成します。
-spec mktemp(Prefix) -> Result
when Prefix :: string(),
Result :: {ok, TempFile :: file:filename()}
| {error, Reason :: file:posix()}.
mktemp(Prefix) ->
Rand = integer_to_list(binary:decode_unsigned(crypto:strong_rand_bytes(8)), 36),
TempPath = filename:basedir(user_cache, Prefix),
TempFile = filename:join(TempPath, Rand),
Result1 = file:ensure_dir(TempFile),
Result2 = file:write_file(TempFile, <<>>),
case {Result1, Result2} of
{ok, ok} -> {ok, TempFile};
{ok, Error} -> Error;
{Error, _} -> Error
end.
のディレクトリーのバージョン:
-spec mktemp_dir(Prefix) -> Result
when Prefix :: string(),
Result :: {ok, TempDir :: file:filename()}
| {error, Reason :: file:posix()}.
mktemp_dir(Prefix) ->
Rand = integer_to_list(binary:decode_unsigned(crypto:strong_rand_bytes(8)), 36),
TempPath = filename:basedir(user_cache, Prefix),
TempDir = filename:join(TempPath, Rand),
Result1 = file:ensure_dir(TempDir),
Result2 = file:make_dir(TempDir),
case {Result1, Result2} of
{ok, ok} -> {ok, TempDir};
{ok, Error} -> Error;
{Error, _} -> Error
end.
両方のこれらは基本的に同じことをしかく乱している今日においても、バイナリに変換するにbase36文字列を追加でどのようなOSに戻るとして、安全なユーザー-現地の仮設キャッシュ場所です。
をunixタイプシステムはもちろん、まだ利用 filename:join(["/tmp", Prefix, Rand])
ものに致 /tmp
Windowsの場合はのようなポイントはこちらです。