【发布时间】:2010-11-18 14:37:44
【问题描述】:
我正在运行一个单独的进程来最小化一个 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() 但它没有区别。
【问题讨论】:
-
没有更多来自您的反馈。现在可以用了吗?