簡體   English   中英

C#無法刪除文件-System.UnauthorizedAccessException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM