2012-01-09 3 views
0

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

Это использует слишком много памяти, конечно. Мне нужно выяснить, как вырезать плохие значения ASCII на диске. Возможно (.NET 4) Memory Mapped File Stream - это правильно (я проверил это из Memory Mapped File to Read End of File? некоторое время назад)?

Все идеи оценены. Благодарю.

+0

Вам нужно удалить и переупорядочить файл, или вы можете заменить неправильные символы пробелами, чтобы сохранить тот же длина? –

+0

Я могу заменить неправильные символы на String.Empty, потому что они в основном являются символами Null и Tab. – Snowy

+0

Почему вы не просто напрямую записываете выходной файл? Нет никакой причины хранить весь вывод в памяти сразу. –

ответ

0

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

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

+0

У вас есть образец (псевдо или настоящий код) о том, как это сделать? – Snowy

 Смежные вопросы

  • Нет связанных вопросов^_^