Мне нужно изменить кодировку файла. Метод, который я использовал загружает все файлы в памяти:C# изменить кодировку файла без загрузки всего файла в память
string DestinationString = Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(File.ReadAllText(FileName)));
File.WriteAllText(FileName, DestinationString, new System.Text.ASCIIEncoding());
Это работает для файлов меньшего размера (в случае, если я хочу изменить кодировку файла для ASCII
), но это не будет хорошо с файлами более 2 ГБ. Как изменить кодировку без загрузки всего содержимого файла в память?
Он отлично работает. Спасибо –
Боковое примечание: очевидно, что можно изменить кодировку * на * ASCII на месте, так как это фиксированная ширина кодирования и не требует больше байтов, чем любая другая кодировка (стоит ли это сделать другую историю) –
@AlexeiLevenkov: Потенциально, но это было бы сложно, поскольку файл может закончиться сокращением. Я определенно поддержал бы тот подход, который я предложил здесь. –