Decouper/fusionner des fichiers

Soyez le premier à donner votre avis sur cette source.

Vue 19 644 fois - Téléchargée 963 fois

Description

Découper et fusionner des fichiers en C#

Suite à la discussion sur http://www.vbfrance.com/code.aspx?ID=41472 j'ai décidé de reprendre la source présente sur http://www.csharpfr.com/code.aspx?ID=28107 afin de l'optimiser quelque peu.

L'idée du programme est simple: passer un fichier en paramètre et le découper en plusieurs morceaux d'une certaine taille. La fonction inverse, c'est à dire fusionner les morceaux de fichiers précédemment découpés est aussi disponible.

Dans le meilleur des cas, j'arrive à des vitesses d'environ 20Mo/sec ce qui représente donc un peu plus d'une 30aine de secondes pour 700Mo soit une amélioration de 15-20% par rapport à la source C# citée plus haut. J'imagine qu'on peut encore faire mieux (buffer dynamique en fonction de la taille du fichier ?) et j'attends donc vos éventuelles idées pour améliorer encore les performances de ce programme!

Conclusion :


N'hésitez pas à soumettre vos améliorations/commentaires...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
10 novembre 2011

Bonjour,

C'est un chouette code par contre peux tu m'expliquer pourquoi mon fichier recollé ne fait pas la même taille que l'orignal ????
J'ai testé avec une iso de 3,7 Go que j'ai coupé en 4 partie de 1 Go j'ai préalablement fais un checksum md5 de l'iso original puis de la version recollée, ils ne correspondent pas. Il y a peut prêt 10 Mo d'écart entre les 2 iso. A quoi cela est-il du ?
Merci d'avance.
Messages postés
1
Date d'inscription
samedi 28 novembre 2009
Statut
Membre
Dernière intervention
28 novembre 2009

comment on lance ce prog ?
Messages postés
12
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
8 octobre 2008

Bonjour, tu nous présente un programme interressant et bien utile! Je te soumet une autre amélioration possible qui engendrerai pas mal de code supplémentaire : un thread pour lire le(s) fichier(s) en correspondance avec un thread pour ecrire le(s) fichier(s), que ce soit pour decouper ou rassembler.
Ainsi lors du découpage si tu place les morceaux sur un autre disque que celui sur lequel se trouve le fichier complet, tu bénéficiera pleinement des vitesses de lecture et ecriture de chacun des disques soit à peu pres 30 Mo/s pour de l'IDE et + encore pour le SATA. L'usage d'un thread pour la lecture et d'un pour l'ecriture évite "l'attente" de la fin d'ecriture pour reprendre la lecture sur deux disques. Et meme si un seul disque est disponible, la vitesse sera la même que ton programme actuellement.

Voila, j'espere que je suis compréhensible.

Cordialement.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
57
On ne passe que d'une seule façon à du code en executable, c'est en compilant.
Donc: en téléchargeant un compilateur C#
Messages postés
10
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
25 janvier 2009

Bonjour,

Je suis débutant. j'ai téléchargé le zip, je ne vois pas l'exe ni comment obtenir l'exe, car je n'ai pas d'environnement de dév. Merci par avance pour votre aide pour l'exe ou comment le mettre en place.

Cordialement,
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.