我正在运行一个单独的进程,它最小化了javascript文件的文件夹。此过程为每个js文件创建一个附加了"_min.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;
}然后我试着摘除器官:
private void RemoveOrginalJs(FileInfo[] files)
{
foreach (var fileInfo in files)
{
File.Delete(fileInfo.FullName);
}
}在每次进程运行后,我都会尝试Process.close(),但这没有什么区别。
发布于 2010-11-18 23:32:19
我不知道您正在启动的工具,但等待它的完成似乎是正确的事情:
p.Start();
p.WaitForExit();https://stackoverflow.com/questions/4215908
复制相似问题