我正在运行一个单独的进程,最小化javascript文件的文件夹。此过程为每个附加了“_min.js”的js文件创建一个新文件。下一步是删除旧的js文件(没有“_min.js”的文件)。由于某种原因,File.Delete无法删除这些文件。
似乎某些进程仍然可以处理这些文件。我尝试删除时收到System.UnauthorizedAccessException异常。我对此文件夹有足够的权限。有人能告诉我我在忽视什么吗?
我在这个循环中运行了几次这个过程。
foreach (var fileInfo in jsFiles)
{
var outFileName = fileInfo.FullName.Replace(".js", "_min.js");
var compressorPath = "\"C:\\Dev\\Team Interactive Tools\\trunk\\Infrastructure\\MsBuild\\lib\\yuicompressor-2.4.2.jar\"";
StringBuilder stringBuilder = new StringBuilder("-jar " + compressorPath + " ");
stringBuilder.Append("\"" + fileInfo.FullName + "\"");
stringBuilder.Append(" -o " + "\"" + outFileName + "\"");
Process p = new Process();
p.StartInfo.FileName = "\"C:\\Program Files (x86)\\Java\\jre6\\bin\\java\"";
p.StartInfo.Arguments = stringBuilder.ToString();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
}
return true;
}
然后我尝试删除orginals:
private void RemoveOrginalJs(FileInfo[] files)
{
foreach (var fileInfo in files)
{
File.Delete(fileInfo.FullName);
}
}
我在每个进程运行后都尝试过Process.close(),但它没有任何区别。
答案 0 :(得分:1)
我不知道你正在开始的工具,但等待它的完成似乎是正确的做法:
p.Start();
p.WaitForExit();
答案 1 :(得分:0)
也许线程仍然锁定了文件?在尝试删除之前,您是否等待他们完成?
答案 2 :(得分:0)
尝试Process.Kill()并在之后删除 此外,您还必须检查脚本是否在另一个进程中运行。要确定此问题,请尝试使用Unlocker。