该进程无法访问文件'd:\ 1.doc',因为它正由另一个进程使用

时间:2011-07-31 12:02:05

标签: c#-4.0 file-io

我的代码:

 object c = "d:\\1.doc";

        if(File.Exists(c.ToString()))
        {
            File.Delete(c.ToString());
        }

错误:

  

该进程无法访问文件'd:\ 1.doc',因为它正在被使用   通过另一个过程。

有多近?代码

4 个答案:

答案 0 :(得分:1)

首先使用string代替object,所以:

string c = "d:\\1.doc";

现在,因为消息指示该文件正由另一个进程使用。要么是通过Windows进程,要么是打开文件流而忘记关闭它。检查代码中与文件交互的位置。

修改:由于您使用的是Microsoft.Office.Interop.Word,请确保先关闭文件,如:

Word.ApplicationClass word = new Word.ApplicationClass();

//after using it:

if (word.Documents.Count > 0)
{
    word.Documents.Close(...);
}

((Word._Application)word.Application).Quit(..);

word.Quit(..);

答案 1 :(得分:1)

当我想在使用Microsoft.Office.Interop.Word打开/阅读文件后删除文件时,我遇到了同样的问题,我需要关闭我的文档和类似的应用程序:

 private void parseFile(string filePath)
        {
            // Open a doc file.
            Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
            Document document = application.Documents.Open(filePath);

            // Loop through all words in the document.
            int count = document.Words.Count;
            for (int i = 1; i <= count; i++)
            {
                // Write the word.
                string text = document.Words[i].Text;
                Console.WriteLine("Word {0} = {1}", i, text);
            }

            // Close document correctly
            ((_Document)document).Close();
            ((_Application)application).Quit();
        }

答案 2 :(得分:0)

您在此程序或其他程序中主动打开该文件,Windows会阻止您在此情况下将其删除。

答案 3 :(得分:0)

检查文件是否仍由另一个应用程序运行(打开)
1- Microsoft Word
2- WordPad