C# - 数追加到文件被保存(C# - Append Number To File Being Sa

2019-07-21 09:26发布

我创建了一个截屏程序和所有工作很大。 唯一的问题是,我不知道我怎样才能使它所以屏幕截图保存附加号码。

例如:截图1,截图2,截图3,截图4等

显然,这可以应用到其他文件被保存。 有任何想法吗? 谢谢。

Answer 1:

下面是我经常使用这种非常情况下的方法。 只是通过像“屏幕截图”的字符串,它会发现在“截图[数字]”的格式最低的可用文件名(或只是“截图”如果没有任何的话):

private string GetUniqueName(string name, string folderPath)
{
    string validatedName = name;
    int tries = 1;
    while (File.Exists(folderPath + validatedName))
    {
        validatedName = string.Format("{0} [{1}]", name, tries++);
    }
    return validatedName;
}

(注:这是一个稍微简化版本,不带文件扩展名在内)。



Answer 2:

有没有你正在使用数字的原因是什么? 将在同一文件夹后重新用于另一个会话? 如果该数字重新启动并替换现有文件如果一天有什么不同?

这些都是各种各样的东西要记住。 值得一提的是,OS X做截图时使用,以提供“图片1”,“图片2”,幸运的是在新的版本,它现在使用“截图上采取2009-12-08在11.35.12”或类似的东西,使容易按日期排序,很容易避免命名冲突等。

正如张贴在其他建议你还是需要做一个检查,如果该文件已经存在,而当你重试DateTime.Now会有所不同,因此文件名会有所不同。 当然,你不应该得到任何冲突,除非该截图是在同一毫秒或用户与日期/时间搞乱(或夏令可以惹你了太多)。



Answer 3:

这里最初是由雷克斯M.它建议将生成的文件名作为被要求在实际的一个问题精解:

public string GetUniqueName(string name, string folderPath)
{
    string pathAndFileName = Path.Combine(folderPath, name);
    string validatedName = name;
    int count = 1;
    while(File.Exists(Path.Combine(folderPath, validatedName)))
    {
        validatedName = string.Format("{0}{1}{2}",
            Path.GetFileNameWithoutExtension(pathAndFileName),
            count++,
            Path.GetExtension(pathAndFileName));
    }
    return validatedName;
}


Answer 4:

既然你正在写的文件,一种方法是搜索当前保存目录,找到一个名为ScreenshotXX最新的文件,并使用正则表达式来从名称中的数字。

您可以使用DirectoryInfo类与沿Regex这个类。



Answer 5:

解汇总

  1. Directory.GetFiles(目标);
  2. 排序文件名
  3. 分析最后的文件名,找到你所使用的最后一个数字
  4. 写有附加到它的下一个数字下一个文件。

将这项工作的吗?



Answer 6:

这是我使用:

string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); string newPath; List<string> files = new List<string>(Directory.GetFiles(path,"*.txt",SearchOption.TopDirectoryOnly)); for(int i=0; files.Contains(newPath=string.Format(path + @"\textfile{0}.txt",i)); i++) { Console.WriteLine("File:{0} exist skipping....", newPath); } File.WriteAllText(newPath,"dummy");



文章来源: C# - Append Number To File Being Saved