Файл используется другим процессом при использовании WriteAllText в C#

Я проверяю, присутствует ли файл в указанном месте, и если да, я заменяю одинарную кавычку на & # 39. Для этого я использую метод WriteAllText. Насколько мне известно, WriteAllText будет использоваться для Create file and write the text and close it, target file is already exists, it will be overwritten,

Я не знаю, почему я получаю System.IOException при использовании

var file = AppDomain.CurrentDomain.BaseDirectory + "test";
if (Directory.Exists(file))
{
    string text = File.ReadAllText(file + "\\test.txt");
    text = text.Replace("'", "&#39");
    File.WriteAllText(file + "\\test.txt", text);
}

Примечание: я использую это внутри Application_BeginRequest метод.

Подскажите, как избежать этого исключения?

2 ответа

Используйте свой код, как показано ниже

            var file = AppDomain.CurrentDomain.BaseDirectory + "test.txt";
            if (File.Exists(file))
            {
                string text = File.ReadAllText(file);
                text = text.Replace("'", "&#39");
                File.WriteAllText(file, text);
            }

Надеюсь, что это решит вашу проблему

Во-первых, вы спрашиваете о существовании каталога при использовании

Directory.Exists(file)

Для проверки наличия файла вам необходимо использовать

File.Exists(file)

Во-вторых, вы пытаетесь прочитать текст из файла, передав в качестве параметра файл, снова объединенный с именем файла. Таким образом, имя файла, которое вы передаете, на самом деле:

AppDomain.CurrentDomain.BaseDirectory + "test.txt" + "\\test.txt";

В-третьих, тот же комментарий для WriteAllText, что и для ReadAllText.

В сети есть много примеров, чтобы научиться читать и писать из файла, например:

Читать из текстового файла - MSDN
Записать в текстовый файл - MSDN

Другие вопросы по тегам