Эффективно ли вырезать некоторые ASCII-коды из файла? - PullRequest
0 голосов
/ 10 января 2012

У меня есть файл на диске 100 МБ (может быть до 300 МБ).Есть нули и некоторые другие управляющие символы, которые не должны быть там.Сначала я прочитал строку в память, а затем перечитал ее Char с помощью Char, затем удалил поврежденные символы и поместил чистые данные в StringBuilder, а затем сделал ToString для этого.

, который использует слишком много памятиконечно.Мне нужно выяснить, как удалить плохие значения ASCII на диске.Может быть (.NET 4) Поток сопоставленного с памятью файла - правильная вещь (я проверил это из Файл сопоставленного с памятью для чтения конца файла? некоторое время назад)?

Все идеи приветствуются.Спасибо.

1 Ответ

0 голосов
/ 10 января 2012

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

Если вы можете заменить плохие символы на месте, чтобы длина файла не изменилась, сопоставьте файл и просканируйте память, заменив каждый плохой символ, например, пробелом (ascii 32). Это самый простой и, вероятно, более быстрый процесс, но в любом случае вы будете доминировать над необработанным диском i / o

...