Piszę aplikację, która wysyła duże pliki. Każdy z tych plików musi być podzielony na mniejsze. Obecnie wykorzystuję funkcję:
public static void SplitFile(string inputFile, int chunkSize, string path)
{
const int BUFFER_SIZE = 20 * 1024;
byte[] buffer = new byte[BUFFER_SIZE];
using (Stream input = File.OpenRead(inputFile))
{
int index = 0;
while (input.Position < input.Length)
{
using (Stream output = File.Create(path + "\\" + index + ".me"))
{
int remaining = chunkSize, bytesRead;
while (remaining > 0 && (bytesRead = input.Read(buffer, 0, Math.Min(remaining, BUFFER_SIZE))) > 0)
{
output.Write(buffer, 0, bytesRead);
remaining -= bytesRead;
}
}
index++;
Thread.Sleep(500);
}
}
}
która dzieli mi duży plik na kilka małych i zapisuje te małe do jakiegoś folderu. Chciałbym, żeby ten podział odbywał się "wirtualnie", tzn. aplikacja wyodrębnia z dużego pliku pierwszą małą część i wysyła. Następnie wyodrębnia drugą część i wysyła. Wysyłany part ma być zapisywany gdzieś do pamięci, nie do folderu. I tak, aż wyśle wszystko, a postęp (którą obecnie część wyodrębnia) zapisuje. Wiem, że coś takiego da się zrobić, tylko nie wiem jak.
Będę wdzięczny za wszystkie rady, linki, podpowiedzi, przykłady...