C # не может записать в файл («используется другим процессом»)? - PullRequest
3 голосов
/ 01 февраля 2012

Я надеялся, что кто-нибудь сможет объяснить мне, почему это происходит:)

Когда я использую приведенный ниже код, он выдает мне ошибку «Процесс не может получить доступ к файлу« C: \ test.txt », потому что он используется другим процессом».

Я очень новичок в C #, поэтому я не уверен, что происходит, спасибо заранее!

String fileNameBefore = @"C:\\test.txt";

public void output(String hex)
{
    using (StreamWriter writer = new StreamWriter(fileNameBefore, true))
    {
        writer.Write(hex);
        writer.Close();
    }
}

Ответы [ 3 ]

6 голосов
/ 01 февраля 2012

Закройте текстовый файл, прежде чем писать в него. (Не в коде ... физически закрыть текстовый файл)

3 голосов
/ 01 февраля 2012

В Windows Vista и Windows 7 корень системного тома (обычно C :) имеет специальную защиту: программы должны запускаться с полными привилегиями администратора, чтобы делать что-либо, кроме создания или удаления несистемных папок.Программы не могут создавать файлы там.Почему он говорит, что файл используется другим процессом?Я ожидаю другое сообщение, но я думаю, что это действительно причина ... Если у вас нет другой программы, у которой открыт этот файл, и у вас недостаточно прав для программы, код которой мы видим выше.

0 голосов
/ 07 марта 2013

Убедитесь, что процесс правильно закрыт, проверив в диспетчере задач Windows и поищите имя процесса, и если вы обнаружите какой-либо процесс, завершите его вручную, нажав кнопку «Завершить процесс» и попробуйте снова.

Если это не сработает, попробуйте переместить путь к файлу в доступную для записи область, например на рабочий стол, потому что, как говорит Марио, у корня есть защита.

также убедитесь, что файл не скрыт и не защищен от записи

Надеюсь, что это помогает с уважением Том

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...