Файл или массив большого размера вывести на экран через буфер маленького размера - C#
Формулировка задачи:
Приветствую!
Суть: нужно продеть слона int[] slon длиной 13467 через игольное ушко byte[] uho = new byte[1024], чтобы часть слона, прошедшая через uho[] была, выведена на экран, например.
Я накидал такой вариант:
Как можно оптимизировать? Изменить?
Предлагайте иные реализации :-)
Главное - слон должен быть большой (вплоть до 200 Мб), толстый, и размер не кратный 2, ухо должно быть не более 8192, и слон должен быть собран весь до последнего байта, ничего не должно потеряться.
Для тех, кто хорошо разбирается в языке, можно попутно разобрать слона int->byte->char || string и обратно (опционально).
Вопрос про производительность открытый.
byte[] buffer = new byte[1024]; // игольное ушко
string mystring ="";
long a = (mynextByte.Length / buffer.Length) + 1; // кол-во итераций
int n = 0;
string[] lines = new string[buffer.Length];
do
{
int k = 0;
do
{
if ((n + k) >= mynextByte.Length) break;
lines[k] = mynextByte[n+k].ToString();
mystring += lines[k].ToString();
k++; // внутренний счетчик
n++; // внешний счетчик
}
while (k < buffer.Length);
a--;
} while (a > 0);Решение задачи: «Файл или массив большого размера вывести на экран через буфер маленького размера»
textual
Листинг программы
static void Main(string[] args)
{
var fileStream = new FileStream("огромный файл :)", FileMode.Open);
using (var bufferedStream = new BufferedStream(fileStream))
{
int value;
while ((value = bufferedStream.ReadByte()) != -1)
{
Console.Write(value);
}
}
Console.ReadKey();
}