Comment écrire des super-rapide de fichiers de streaming de code en C#?

Je dois diviser un énorme fichier en plusieurs fichiers plus petits. Chacun des fichiers de destination est défini par un décalage et la longueur est le nombre d'octets. Je suis en utilisant le code suivant:

private void copy(string srcFile, string dstFile, int offset, int length)
{
    BinaryReader reader = new BinaryReader(File.OpenRead(srcFile));
    reader.BaseStream.Seek(offset, SeekOrigin.Begin);
    byte[] buffer = reader.ReadBytes(length);

    BinaryWriter writer = new BinaryWriter(File.OpenWrite(dstFile));
    writer.Write(buffer);
}

Considérant que j'ai appeler cette fonction à environ 100 000 fois, il est extrêmement lente.

  1. Est-il un moyen de faire de l'Écrivain connecté directement au Lecteur? (Qui est, sans charger le contenu dans la mémoire Tampon dans la mémoire).
  • Fichier.OpenRead et Fichier.OpenWrite de 100 000 sera lente bien...
  • Êtes-vous le fractionnement du fichier parfaitement, c'est à dire pourriez-vous reconstruire un fichier volumineux par juste de rejoindre tous les petits fichiers? Si donc il y a des économies à avoir là. Si non, les gammes de petits fichiers se chevauchent? Ils sont triés dans l'ordre de décalage?
InformationsquelleAutor ala | 2009-06-05