IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Division d'un fichier en n parties


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Par défaut Division d'un fichier en n parties
    Bonsoir tout le monde,

    J'aurais besoin de l'aide de la communauté pour m'aider à résoudre un petit soucis. Voilà j'aimerais pouvoir prendre un fichier de n'importe quel type (iso, pdf, avi...) et pouvoir le diviser en n parties ( de taille à peu prés identique), mon but n'est pas que ces fichiers soient exploitables (pouvoir les lire ou autre chose) mais juste que :
    Taille initiale = Taille fichier 1 + Taille fichier 2 + Taille fichier 3+...+ Taille fichier n
    Mais je n'ai pas d'idée de comment commencer J'aimerais donc juste que vous m'orientez afin que je puisse réaliser cette fonction (au moins dans les principes)
    J’espère avoir été assez clair dans mon explication
    Merci à tous pour vos réponses.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Si tu regardes cette FAQ, tu verras une solution pour copier un fichier. Le principe est de lire le fichier d'origine et d'écrire qu'on lit dans le fichier de destination, dans ces 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ((nbLecture = sourceFile.read(buffer)) != -1){
         destinationFile.write(buffer, 0, nbLecture);
    }
    En résumé, tant qu'il y a quelque chose à lire, on écrit.

    Mais on peut très bien changer la destination chaque fois qu'on a lu un certain nombre d'octets, ce qui permettra de découper le fichier. Dans cette boucle, nbLecture est le nombre d'octets lus à chaque itération : en le cumulant dans une variable, et en comparant celle-ci à un nombre qui correspond à la taille qu'on veut pour chaque partie, on peut déterminer quand changer la destination.

    A noter qu'ici on utilise un buffer et donc on ne peut limiter le nombre d'octets lus : s'il y a suffisament d'octets pour remplir le buffer, il le sera. Donc il est nécessaire de de dimensionner le buffer en fonction de la taille qu'on veut pour chaque partie qui doit être un multiple de la taille du buffer). Ou de faire un traitement particulier lorsqu'on dépasse la taille de la sous-partie :

    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    totalLus += nbLecture;
    si ( totalLus>taillePartie ) {
       écrire les octets dans le buffer de 0 à totalLus-taillePartie // on écrit les premiers octets 
       changer la destination pour écrire une nouvelle partie
       écrire les octets de totalLus-taillePartie à nbLecture // on écrit la fin du buffer 
       totalLus = 0 // on recommence à compter pour la partie suivante
    }
    sinon si ( totalLus==taillePartie ) {
       écrire les octets dans le buffer de 0 à nbLecture // on écrit tous les octets lus
       changer la destination pour écrire une nouvelle partie
       totalLus = 0 // on recommence à compter pour la partie suivante
    }
    sinon {
       écrire les octets dans le buffer de 0 à nbLecture // on écrit tous les octets lus
    }

    Bien penser à fermer la destination lorqu'on la change.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/05/2009, 09h31
  2. comment diviser une page jsf en trois partie
    Par info_plus dans le forum JSF
    Réponses: 9
    Dernier message: 02/04/2008, 15h25
  3. Lecture Fichier (url) par partie
    Par Belegkarnil dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 23/02/2007, 14h44
  4. Fichiers perdus (en partie!)
    Par gofono_bass dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 03/07/2006, 22h42
  5. comment diviser mon application access en 2 partie
    Par Soulghard dans le forum Access
    Réponses: 4
    Dernier message: 10/01/2006, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo