перезаписать файл с помощью File.CreateText (C #) - PullRequest
1 голос
/ 24 августа 2011

У меня возникла следующая проблема.Я использую .NET Framework 1.1, и я пытаюсь перезаписать файл с помощью этого кода:

        try
        {
            using (StringWriter writer = new StringWriter())
            {
                Server.Execute(path, writer);

                using (StreamWriter sr = File.CreateText(filepath + fileName))
                {
                    sr.WriteLine(writer.ToString());
                }
            }
        }
        catch (Exception exc)
        {
            ...
        }

Иногда он работает нормально, но иногда он не перезаписывает файл и не выдается исключение.Может кто-нибудь сказать мне, что может быть проблема или как решить, почему он не перезаписывает файл?

Ответы [ 3 ]

7 голосов
/ 24 августа 2011

Почему бы просто:

File.WriteAllText(Path.Combine(filepath, fileName), writer.ToString())

С MSDN : создание нового файла, запись указанной строки в файл, а затем закрытие файла.Если целевой файл уже существует, он перезаписывается.

2 голосов
/ 19 апреля 2015

Может кто-нибудь сказать мне, что проблема может быть или как решить, почему это не перезаписывает файл?

Ну, чтобы ответить на ваш актуальный вопрос, File.CreateText(string file) ведет себя точно так, как задумано. если filepath + fileName использовать ваш пример, это файл, который уже существует, он открывает файл, а не создает его. (Не перезаписывает).

Вы можете сначала проверить, существует ли файл, используя File.Exists(string file), затем File.Delete(string file).

Если File.CreateText(string file) не соответствует вашим потребностям, вы можете попробовать другой тип. Может быть FileInfo?

Microsoft говорит:

Создает или открывает файл для записи текста в кодировке UTF-8.

Источник: https://msdn.microsoft.com/en-us/library/system.io.file.createtext%28v=vs.110%29.aspx

0 голосов
/ 22 октября 2012

перезапись также может быть достигнута с помощью встроенного метода file.copy.

File.copy перегружен -

File.Copy Method (Source, Destination, OverWrite)

больше информации о msdn

надеюсь, это поможет.

...