Столкнулся с такой проблемой: есть файл на миллион чисел, разделенных пробелом (одной строкой). Можно ли как-то читать числа по одному? Потому что чтение строки целиком очень нагружает память. Пробовал через StreamReader.Read, но он считывает посимвольно. Конечно, можно читать символы пока не встречу пробел и складывать из них числа, но это кажется не очень красивым вариантом, может есть методы специально для такого? Заранее спасибо за советы.
Напишем нехитрую функцию для чтения из потока
public IEnumerable<int> ReadNumbers(Stream st)
{
var buffer = new StringBuilder();
using (var sr = new StreamReader(st))
{
while(!sr.EndOfStream)
{
char digit = (char)sr.Read();
if (!char.IsDigit(digit))
{
if (buffer.Length == 0) continue;
int ret = Int32.Parse(buffer.ToString());
buffer.Clear();
yield return ret;
}
else {
buffer.Append(digit);
}
}
if (buffer.Length != 0)
{
int ret = Int32.Parse(buffer.ToString());
buffer.Clear();
yield return ret;
}
}
}
Чтобы читать файл побайтово
foreach(var n in ReadNumbers(File.OpenRead(@"D:\temp\sample.txt")))
Console.WriteLine(n);
Чтобы читать файл с буфером в мегабайт
foreach (var n in
ReadNumbers(
new BufferedStream(
File.OpenRead(@"D:\temp\sample.txt"),
1024 * 1024)))
Console.WriteLine(n);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется возможность добавлять объекты с пользовательским именем (textBox + AddButton) в списокДалее, на основе имен этих объектов будут генерироваться...
Сегодня я столкнулся с проблемойЯ загружаю на свой сайт картинку, процесс сохранения работает исправно
В случае успеха происходит процесс авторизации (создание необходимых связей cookies + session + db)Обратите внимание, что в db тоже должна быть связь...