Форматирование текстового файла, как обновить файл после того, как я закончил его разбор? - PullRequest
0 голосов
/ 27 ноября 2009

Как мне открыть файл, выполнить какое-либо регулярное выражение для файла, а затем сохранить файл?

Я знаю, что могу открыть файл, прочитать строку за строкой, но как мне обновить фактическое содержимое файла и затем сохранить файл?

Ответы [ 4 ]

2 голосов
/ 27 ноября 2009
string[] lines = File.ReadAllLines(path);
string[] transformedLines = lines.Select(s => Transform(s)).ToArray();
File.WriteAllLines(path, transformedLines);

Здесь, например, Transform равно

public static string Transform(string s) {
    return s.Substring(0, 1) + Char.ToUpper(s[1]) + s.Substring(2);
}
2 голосов
/ 27 ноября 2009

Следующий подход будет работать независимо от размера файла, а также не повредит исходный файл в любом случае, если операция завершится неудачно до ее завершения:

string inputFile = Path.Combine(Environment.GetFolderPath(
        Environment.SpecialFolder.MyDocuments), "temp.txt");
string outputFile = Path.Combine(Environment.GetFolderPath(
        Environment.SpecialFolder.MyDocuments), "temp2.txt");
using (StreamReader input = File.OpenText(inputFile))
using (Stream output = File.OpenWrite(outputFile))
using (StreamWriter writer = new StreamWriter(output))
{
    while (!input.EndOfStream)
    {
        // read line
        string line = input.ReadLine();
        // process line in some way

        // write the file to temp file
        writer.WriteLine(line);
    }
}
File.Delete(inputFile); // delete original file
File.Move(outputFile, inputFile); // rename temp file to original file name
0 голосов
/ 27 ноября 2009

Закройте файл после прочтения
Откройте файл для записи
Напишите новое содержание

0 голосов
/ 27 ноября 2009

Открыть файл для чтения. Прочитать все содержимое файла в память. Закройте файл. Откройте файл для записи. Запишите все содержимое в файл. Закройте файл.

В качестве альтернативы, если файл очень большой:

Открыть файл A для чтения. Откройте новый файл (файл B) для записи. Обработайте каждую строку файла A и сохраните в файл B. Закрыть файл. Закрыть файл. Удалить файл. Переименуйте файл B в файл A.

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