文件的奇怪问题.移动命令
本文关键字:移动 命令 问题 文件 | 更新日期: 2023-09-27 18:05:55
我在使用文件时遇到了一个奇怪的问题。移动命令。程序实际上移动并重命名文件,但随后向我抛出一个异常,源文件未找到;
程序工作正常,如果我捕获异常,但我想知道为什么我得到这些异常。
我代码: foreach (string str in CPM.prot.FKFinishedBad)
{
try
{
string dir = System.Configuration.ConfigurationSettings.AppSettings["ResultDir"] + "''" + DateTime.Now.ToString("yyyy_MM_dd") + "_Bearbeitete Protokolle";
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
File.Move(System.Configuration.ConfigurationSettings.AppSettings["ResultDir"] + "''" + str + "_" + CPM.LastJob + ".txt", dir + "''" + "''" + str + "_" + CPM.LastJob + "_Nachproduziert" + ".txt");
}
catch (Exception e)
{
}
}
确保CPM.prot.FKFinishedBad中的每个项都是唯一的-这可能是导致这种现象的原因。
另外,我建议重构代码:目录行不需要重复,应该在循环之外。
请学会使用String。
您确定所有文件都存在吗?可能会发生其中一个丢失(这解释了异常),而其他的被正确处理。您也可以在移动前使用File.Exists检查它们。
另外,在使用空catch块时要小心,它们会在调试时引起很多麻烦。
尝试在这里暂停一个线程半秒(或更短):
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
//suspend thread for 0.5 sec
}
这可能与您创建目录并立即移动文件有关。所以挂起一个线程,让"呼吸"到系统。
我刚刚遇到这个问题,我花了一段时间才意识到有一个FileInfo.MoveTo
命令似乎做同样的事情。
但是它不会抛出异常,并且可以工作。