Вы воссоздаете тестовый массив при каждом прохождении цикла.
Это означает, что когда вы записываете тестовый массив в файл в конце, вы записываете только последний блок данных, который вы обработали.
У вас есть несколько вариантов:
1) Измените размер массива на каждом проходе и скопируйте предыдущие данные в новый массив. Это было бы очень неэффективно. Это тот же механизм, который использует Array.Resize.
2) Если вы заранее знаете желаемый размер массива (т. Е. Он совпадает с размером данных, которые вы читаете из файла, или кратным размеру файла), просто измените размер массива один раз перед вводом петля.
3) Используйте другую структуру данных, такую как List или ArrayList.