Примитивная проблема, но что-то я торможу. Поздно, наверное. Или рано...
Ну не важно, в общем, так:
есть текстовой файл (*БОЛЬШОЙ* — это больше 30-ти МВ);
его надо прочитать в массив символов и отразить в richTextBox не меняя. С задачей прочитать справились путем FileRead.ReadtoEnd();
потом надо из массива (условно char[] FileContent) выдирать куски (скажем, по 30 кило) и производить с ними манипуляции типа удаления определенной последовательности символов (обыкновенных букв).
Так вот, как открыть — знаю.
Как потом с кусками текста поступать — тоже знаю:
System.Text.StringBuilder strOut = new System.Text.StringBuilder();
strOut.Append(tempBuff);
string str = strOut.ToString().
Не знаю одного — как мне из массива символов FileContent[richTextBox1.TextLenght] выдирать куски tempBuff[tempBuffSize], где tempBuffSize, предположим, 30KB?
Здравствуйте, Moloch, Вы писали:
M>Не знаю одного — как мне из массива символов FileContent[richTextBox1.TextLenght] выдирать куски tempBuff[tempBuffSize], где tempBuffSize, предположим, 30KB?
M> есть текстовой файл (*БОЛЬШОЙ* — это больше 30-ти МВ); M> его надо прочитать в массив символов и отразить в richTextBox не меняя.
может не стоит все 30М сразу пихать в richTextBox?
показать первый кусок, а по мере того, как юзер будет скроллировать, дочитывать следующие
эт конечно намного сложнее, но зато показать первый кусок можно быстро
я понимаю, все зависит от задачи, но если юзер будет просмтатривать несколько больших файлов чисто поверхностно ...
Здравствуйте, Banch, Вы писали: B>я понимаю, все зависит от задачи, но если юзер будет просмтатривать несколько больших файлов чисто поверхностно ...
Не, эти файлы — логи сервера за день, их будут очень внимательно просматривать на предмет наличия разных отклонений в работе. Так что придется файл сразу весь показывать.
А разве нельзя просто прочитать определенный массив символов из другого массива, начиная с определенной позиции? Так, чтобы не использовать Array.Copy.
Здравствуйте, Moloch, Вы писали:
M>Здравствуйте, Banch, Вы писали: B>>я понимаю, все зависит от задачи, но если юзер будет просмтатривать несколько больших файлов чисто поверхностно ...
M>Не, эти файлы — логи сервера за день, их будут очень внимательно просматривать на предмет наличия разных отклонений в работе. Так что придется файл сразу весь показывать.
Ну тогда выводи все на печать, и пусть внимательно просматривают,
но ты ведь всеровно не покажешь больше, того что влазит на экран, так зачем все
зачитывать.
M>А разве нельзя просто прочитать определенный массив символов из другого массива, начиная с определенной позиции? Так, чтобы не использовать Array.Copy.
Можно через unsafe или через for.
M>А разве нельзя просто прочитать определенный массив символов из другого массива, начиная с определенной позиции? Так, чтобы не использовать Array.Copy.
в .Net нет указателей, чтоб передавать их какому-то другому методу или передават их со смещением
чтобы не хранить в памяти несколько кусков по 30М, лучше поблочно читать данные, производить над блоком нужные действия (замена, формироватирование ... ) и складывать все в StringBuilder, потом передать полученую строку в RichTextBox