English 中文(简体)
C#:产生独特档案名称的最快途径是什么?
原标题:C#: What is the fastest way to generate a unique filename?
  • 时间:2009-10-21 18:12:26
  •  标签:

我看到了一些随机点名的建议,包括使用档案。

System.IO.Path.GetRandomFileName()

System.Guid

并评估档案延期。

我的问题是: 产生独一无二的档案名称的最快方式是什么?

最佳回答

GU GU 极快, ,因为执行保障 视窗可在100-nanosecond timepan中生成至少16,384千兆克的全球数据系统。 (正如其他人指出的,光彩并不保证,只允许这样做。) 然而,古董会的一代人实际上迅速。 实际 任何网络的任何档案系统发生碰撞的可能性都很低。 足够安全的是,尽管检查是否掌握了这一档案名称是最佳做法,但实际上,你甚至永远不需要这样做。

因此,除储蓄本身外,你没有再研究I/O业务;0.2毫秒(试验机器)生成名称。 很快。

问题回答

页: 1

我实际上可以说,这是否是fastest,但却是这样做的right,这一点更为重要。

我撰写了20年的档案系统司机,说Rex是正确的。 编写指南的速度要快得多,因为它比寻找独一无二的档案名称要少得多。 GetTempFileName实际上制造了一个档案,这意味着它必须通过整个档案系统驾驶员排队(他知道有多少电话和改用纸浆)。 GetRandom 象这种声音一样,越快越好,但我相信,国际统一私法协会的呼吁会更快。 人们不认识到的是,即使为了证明档案的存在而进行测试,也需要通过驾驶员队伍发出完整的呼吁。 这实际上导致公开、有属性和接近(至少3次电话,视级别而定)。 事实上,它至少需要20个功能电话,并且要向摩托车过渡。 两性平等与发展全球倡议在大多数目的中都充分体现了独特性。

。 ∗∗∗∗∗ 这样,你就会发现错误,并且可以睡觉。

一边说,对错误的检查过于仓促。 如果假设不正确,守则应设计成坠毁,或处理例外情况。 它比每次检查每个功能的错误要快得多,才能推动和普及并处理例外情况。

如果你控制档案存放地的目的地,而且只有一个过程和线索要文件,只是将一些自动加油号码贴在基名称上。

如果你不控制目的地,或需要多管齐下,则使用统一信息数据库。

在每个档案中使用斜线和水泥。

如果你控制该名录,你可以根据最后标准来命名你的档案:

DirectoryInfo info = new DirectoryInfo(directoryPath);
long uniqueKey = info.LastWriteTime.Ticks+1L;
string filename = String.Format("file{0}.txt", key);

但是,你必须检查该守则的执行情况: 我猜测建造一家名录并不免费。

我希望,这种自发性功能将有助于一个人产生一个独特的档案名称。

public string getUniqueFileName(int i, string fullpath, string filename)
{
    string lstDir = fullpath.Substring(0, fullpath.LastIndexOf( \ ));
    string name = Path.GetFileName(fullpath);
    string path = fullpath;

    if (name != filename)
        path = Path.Combine(lstDir, filename);

    if (System.IO.File.Exists(path))
    {
        string ext = Path.GetExtension(name);
        name = Path.GetFileNameWithoutExtension(name);                
        i++;
        filename = getUniqueFileName(i, fullpath, name + "_" + i + ext);
    }

    return filename;
}

你可以做这样的事情:

file.MoveTo(deletedfilesdir + @"" + f.Name + **DateTime.Now.ToFileTimeUtc()** + f.Extension);




相关问题
热门标签