如果文件.存在,生成序列号

本文关键字:序列号 文件 存在 如果 | 更新日期: 2023-09-27 18:01:39

下面的XML是用于图像输出的目的,对我来说使用下面的XML代码输出图像没有任何问题。

public static void TIF(Document dc, SortedList<string, object> dcIndexes)
{
    string str1 = dcIndexes["Document,name"].ToString();
    string str2 = dcIndexes["Document,age"].ToString();
    string str5 = dcIndexes["Document,status"].ToString();
  string str3 = Path.Combine(Config.OutputFolder, DateTime.Now.ToString("yyyyMMdd"));
  if (!Directory.Exists(str3))
    Directory.CreateDirectory(str3);
  string str4 = Path.Combine(str3, str1 + "_" + str2 + "_" + str5 + ".tif");
  DocumentHistory dh = (DocumentHistory) null;
  string sourceFileName = ServiceES.FromSE(dc, out dh);
  if (File.Exists(str4))
    File.Delete(str4);
  File.Move(sourceFileName, str4);
  PTrace.LogInformation("{0} - TIF - {1}", (object) dc.Title, (object) str4);
}

现在的输出路径是'YYYYMMDD'NAME_AGE_STATUS.tif如果"name"为空,图像名称将变为:'YYYYMMDD'_AGE_STATUS.tif 我现在的问题是,在数据库中有相同的年龄和状态。该图像将只替换重写第一个图像,然后是第二个和第三个图像,最终只有一个图像。

我可以知道如何在后面添加一个运行号码吗?示例:'YYYYMMDD'_AGE_STATUS.tif (first image), 'YYYYMMDD'_AGE_STATUS_001.tif (second image), 'YYYYMMDD'_AGE_STATUS_002.tif (third image). if can remove the "_" front of AGE will look better. example: 'YYYYMMDD'AGE_STATUS_002.tif '似乎是因为下面的代码不允许:

 if (File.Exists(str4))
  File.Delete(str4);

我怎么能添加一个序列号001,002,003后面,如果它的重复tif ?

_23_Single
_23_Single
_23_Single
_23_Single
_23_Single
_23_Single
_23_Single
_23_Single
_23_Single
_23_Single
成为:

    _23_Single
    _23_Single_001
    _23_Single_002
    _23_Single_003
    _23_Single_004
    _23_Single_005
    _23_Single_006
    _23_Single_007
    _23_Single_008
    _23_Single_009

或变成:

23_Single
23_Single_001
23_Single_002
23_Single_003
23_Single_004
23_Single_005
23_Single_006
23_Single_007
23_Single_008
23_Single_009

如果文件.存在,生成序列号

您必须创建文件名,检查它,然后在文件存在时更改它。例如:

public static void TIF(Document dc, SortedList<string, object> dcIndexes)
{
    string str1 = dcIndexes["Document,name"].ToString();
    string str2 = dcIndexes["Document,age"].ToString();
    string str5 = dcIndexes["Document,status"].ToString();
    string str3 = Path.Combine(Config.OutputFolder, DateTime.Now.ToString("yyyyMMdd"));
    if (!Directory.Exists(str3))
        Directory.CreateDirectory(str3);
    // ********
    // find first available file name
    bool done = false;
    int sequence = 0;
    string str4;
    string baseName = str1 + "_" + str2 + "_" + str5;
    do
    {
        // change here ***
        string fname = baseName;
        if (sequence > 0)
            fname = fname + "_" + sequence.ToString();
        // end of change ***
        str4 = Path.Combine(str3, fname + ".tif");
        if (File.Exists(str4))
            ++sequence;
        else
            done = true;
    } while (!done);
    // str4 now contains the file name
    // ********
    DocumentHistory dh = (DocumentHistory) null;
    string sourceFileName = ServiceES.FromSE(dc, out dh);
    if (File.Exists(str4))
        File.Delete(str4);
    File.Move(sourceFileName, str4);
    PTrace.LogInformation("{0} - TIF - {1}", (object) dc.Title, (object) str4);
}

我会数一下,已经存在多少个文件

string fileName = // your file name
int filesWithThisName = 1;
while(File.Exists(fileName))
{
  fileName = Path.Combine(str3, str1 + "_" + str2 + "_" + str5 + "_" + i.ToString("D3") + ".tif");
  i++;
}
// save file