![](/img/trans.png)
[英]System.UnauthorizedAccessException in File.Create c#
[英]C# Cannot Delete File - System.UnauthorizedAccessException
我正在運行一個單獨的過程,以最小化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(),但沒有區別。
我不知道您要啟動哪個工具,但是等待它完成似乎是正確的選擇:
p.Start();
p.WaitForExit();
也許線程仍然將文件鎖定了? 在您嘗試刪除之前,您是否等待它們完成?
嘗試使用Process.Kill()並隨后刪除。
此外,您還必須檢查腳本是否還沒有在另一個進程中運行。 要確定這一點,請嘗試使用Unlocker 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.