Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 7
1

Выборка из файла, размер которого около 100 Мб

06.04.2014, 10:32. Показов 714. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

У меня есть на чтение большой файл, около 100 МБ, мне нужно сделать по нему выборку.

Проблема в том, что цикл
C#
1
2
3
4
5
6
byte b = 0;
while(b != 255)
{
    b = (byte)streamReader.ReadByte();
    MY METHOD(b);
}
для меня слишком медленный, подскажите, как читать по, например, 2000 символов от начала и до конца файла?

P.S. читать сразу все байты файла нельзя, читаю байты так как нужен каждый символ файла, а он в кодировке ASCII.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2014, 10:32
Ответы с готовыми решениями:

100 миллионов записей в БД - выборка, размер, нагрузка?
Поставили интересную задачу - хранить в БД порядка ста миллионов записей, конкретно - номера от 1...

Работа с файловой системой. Поиск файлов, удаление файл размер которого превышает 100 килобайт
Всем привет! Помогите пожалуйста! Вообщем необходимо реализовать программу , которая будет...

Определить размер файла А, если файл пуст то удалить его, иначе вывести 100 байтов содержимого на экран
Определить размер файла А, Если файл пуст то удалить его, иначе вывести 100 байтов содержимого на...

Игровой компьютер около 1000$ (+-100$)
Сам в железе не шарю, буду собирать комп с нуля так что надо все кроме мышки и клавы. В сумму...

6
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
06.04.2014, 11:15 2
А если считать сразу все в массив, а потом в массиве найти то, что Вам нужно? Так не пойдет?
0
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 7
06.04.2014, 11:46  [ТС] 3
Не подойдет, если мне дадут файл не 100 мб, а 15-17 ГБ, у меня на это никакой памяти не хватит и полетят исключения.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
06.04.2014, 11:52 4
Ну как вариант, считывать побайтно (считали определенной количество байтов, проверили, если там нет того что надо - считывать еще кусок).
0
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 7
06.04.2014, 12:05  [ТС] 5
Мне надо все байты проверить и все обработать, просто нельзя весь документ кидать в память сразу, вот я и спрашиваю каким циклом можно пройтись по всему документу, считывая по 1024 байта (например), а не все сразу, которые я бы поочередно обрабатывал, Чтобы память не засорять. Главное: чтобы он в конце документа из этого цикла вышел.

В общем аналог
C#
1
2
3
4
While (EndOfFile) 
{
 
}
0
Заблокирован
06.04.2014, 12:21 6
Читайте построчно я не думаю что найдется файлы в 1 строку.
C#
1
2
3
4
5
6
7
String line = "";
While((line = read.ReadLine())!=null){
 
// Тут добавляем в массив или кудато где будет вам удобно разбирать строки
// Можно обрабатывать построчно либо по 4-5 строк
 
}
0
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
06.04.2014, 12:35 7
Цитата Сообщение от reslea Посмотреть сообщение
подскажите, как читать по, например, 2000 символов от начала и до конца файла?
C#
1
2
3
4
5
6
7
8
9
10
char[] buffer = new char[2000];
int bytesRead = 0;
while ((bytesRead = streamReader.Read(buffer, 0, buffer.Length) > 0)
   MY_METHOD(buffer, 0, bytesRead);
 
void MY_METHOD(char[] buffer, int offset, int length)
{
   for (int i = 0; i < length; i++)
      if (buffer[i + offset] == 'A') throw new InvalidCharacterException();
}
0
06.04.2014, 12:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2014, 12:35
Помогаю со студенческими работами здесь

Размер приложения превышает размер ресурсов почти на 100 Мб
Здравствуйте..Столкнулся с такой проблемой: Сейчас пишу Metro-приложения под Windows 8..У меня есть...

Пользователь задает размер массива и он заполняет массив случайными целыми числами, в диапазоне от -100 до 100
Как это реализовать

В одномерном массиве вставить элемент, равный 100, перед последним элементом, значение которого меньше 100
В одномерном массиве с вещественными элементами вставить элемент, равный 100, перед последним...

Высокая загрузка жёсткого диска около 90%-100%
https://a.***********/a41/1911/bc/f215795589f3.png Привет друзья, подскажите в чём проблема? Новый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru