Mi piacerebbe sapere come posso dividere un file di grandi dimensioni senza utilizzare troppe risorse di sistema. Attualmente sto usando questo codice:Come dividere in modo efficiente file di grandi dimensioni
public static void SplitFile(string inputFile, int chunkSize, string path)
{
byte[] buffer = new byte[chunkSize];
using (Stream input = File.OpenRead(inputFile))
{
int index = 0;
while (input.Position < input.Length)
{
using (Stream output = File.Create(path + "\\" + index))
{
int chunkBytesRead = 0;
while (chunkBytesRead < chunkSize)
{
int bytesRead = input.Read(buffer,
chunkBytesRead,
chunkSize - chunkBytesRead);
if (bytesRead == 0)
{
break;
}
chunkBytesRead += bytesRead;
}
output.Write(buffer, 0, chunkBytesRead);
}
index++;
}
}
}
L'operazione richiede 52.370 secondi per dividere un file 1,6 GB in file 14MB. Non sono preoccupato per quanto tempo impiega l'operazione, sono più preoccupato per le risorse di sistema utilizzate in quanto questa app verrà distribuita in un ambiente di hosting condiviso. Attualmente questa operazione è in grado di massimizzare l'utilizzo dell'IO HDD del mio sistema al 100% e rallenta notevolmente il mio sistema. L'utilizzo della CPU è basso; La RAM sale un po ', ma sembra a posto.
Esiste un modo per limitare questa operazione all'utilizzo di troppe risorse?
Grazie
Potrebbe non funzionare su un separato thread con priorità più bassa ? – w69rdy
@ w69rdy - nota "L'utilizzo della CPU è basso" - CPU non è il collo di bottiglia qui. –
@Marc Ok punto fiera – w69rdy