簡體   English   中英

如果File.Exists並生成序列號

[英]if File.Exists & generate a sequence number

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 圖像將替換為第二圖像和第三圖像后面的第一張圖像,最后只有1張圖像。

我可以知道如何添加一個運行數字? 示例: \\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 (third image). if can remove the "_" front of AGE will look better. example: \\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);

如果它的重復tif,如何添加序列號001,002,003? 現在重復了10個文件名。

_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM