Файл используется другим процессом при использовании 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("'", "'");
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("'", "'");
File.WriteAllText(file, text);
}
Надеюсь, что это решит вашу проблему
Во-первых, вы спрашиваете о существовании каталога при использовании
Directory.Exists(file)
Для проверки наличия файла вам необходимо использовать
File.Exists(file)
Во-вторых, вы пытаетесь прочитать текст из файла, передав в качестве параметра файл, снова объединенный с именем файла. Таким образом, имя файла, которое вы передаете, на самом деле:
AppDomain.CurrentDomain.BaseDirectory + "test.txt" + "\\test.txt";
В-третьих, тот же комментарий для WriteAllText, что и для ReadAllText.
В сети есть много примеров, чтобы научиться читать и писать из файла, например:
Читать из текстового файла - MSDN
Записать в текстовый файл - MSDN