Как быстро преобразовать огромный текстовый файл из Unix в Windows в NET core - PullRequest
0 голосов
/ 06 августа 2020

In. Net core, у меня есть огромные текстовые файлы, которые нужно преобразовать из Unix в Windows.

Поскольку я не могу полностью загрузить файл в память (файлы слишком большой), я читаю каждый байт один за другим, и когда я сталкиваюсь с LF, я выводю LF + CR. Этот процесс работает, но для больших файлов он занимает много времени. Есть ли более эффективный способ сделать это?

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

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 06 августа 2020

Не зная больше о конкретных c файлах, которые вы пытаетесь обработать, я бы, вероятно, начал с чего-то вроде приведенного ниже и посмотрел, принесет ли это мне желаемые результаты.

В зависимости от Учитывая специфику вашей ситуации, вы можете сделать что-то более эффективное, но если вы обрабатываете действительно большие наборы данных с неструктурированным текстом, то обычно для решения проблемы требуется более мощное оборудование, если скорость все еще остается проблемой.

Вам не нужно указывать кодировку, чтобы использовать класс StreamReader. Возникла ли конкретная c проблема с читателем, с которым вы столкнулись?

const string inputFilePath = "";
const string outputFilePath = "";

using var sr = new StreamReader(inputFilePath);
using var sw = new StreamWriter(outputFilePath);

string line;

// Buffers each line into memory, but not the newline characters.
while ((line = await sr.ReadLineAsync()) != null)
{
    // Write the contents of the string out to the "fixed" file (manually
    // specifying the line ending you want).
    await sw.WriteAsync(line + "\r\n");
}
...