の作成方法を教えてください、温度ファイル名にはGimp用ドキュメ?

StackOverflow https://stackoverflow.com/questions/1222084

  •  10-07-2019
  •  | 
  •  

質問

あげるデータをファイルからその他の関数はファイルとして入力します。

の作成方法を教えてください独自のファイル名には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モジュールに注目しました。一見の価値あり

http://www.erlang.org/doc/man /test_server.html#temp_name-1

またこの問題--と私のユーザーはコミットメント-ラインを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の場合はのようなポイントはこちらです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top