我正在更新它使用下面的代碼放置基於日期的文件夾中的文件的項目:此DateTime優化是否會導致本地化問題?它會更有效率嗎?這值得麼?
int month = DateTime.Now.Month;
string zero = (month < 10) ? "-0" : "-";
string folder = "Folder" + DateTime.Now.Year.ToString() + zero + month.ToString() + "\\";
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
ArchiveFolder = folder;
//...
DateTime now = DateTime.Now;
int date = now.Day;
string zero = (date < 10) ? "0" : "";
string saveaspath = zero + date.ToString() + "_" + now.ToLongTimeString() + "_" + name;
#if DOTNET20
foreach (char c in Path.GetInvalidFileNameChars())
#else
foreach (char c in Path.InvalidPathChars)
#endif
saveaspath = saveaspath.Replace(c, '-'); // substitute - for bad chars
saveaspath = saveaspath.Replace(':', '-');
string originalname = saveaspath;
string ext = ".ext";
saveaspath = Path.Combine(ArchiveFolder, saveaspath + ext);
int count = 1;
while (File.Exists(saveaspath)) // make unique
{
string num = " (" + count++.ToString() + ")";
saveaspath = Path.Combine(ArchiveFolder, originalname + num + ext);
}
例生成的文件: Folder/2010-06/18_2-42-09 PM_name.ext
這是爲每個文件運行通常由於程序的性質,一般爲許多文件。
我在考慮用DateTime格式字符串更新連接的DateTimes - 我想這可能比所有這些不同的ToString()等更高效。不過,我很緊張,當用戶有不同的文化設置時可能會搞砸。然後,再次,這個當前的代碼可能會做一些時髦 - 我不知道。
所以:我應該使用格式字符串重做代碼嗎?或者保持原樣?它會使性能受益嗎?它會依賴於文化嗎?
(澄清:我的問題不是如何使用格式字符串重寫它;相反,我關心的是,這樣做的後果。)
感謝您的超級深入解答 - 回答我的所有問題!聽起來不錯。 – NickAldwin 2010-06-18 20:02:12