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

Langage Java Discussion :

Transformer byte[] en File


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Par défaut Transformer byte[] en File
    Bonjour,

    je fais suite à mon post précédent (http://www.developpez.net/forums/sho...18&postcount=1) où je faisais l'inverse ...

    J'ai maintenant un tableau de byte[] qui contient mon fichier et je souhaiterai à par de ce tableau de byte "recréer" mon File.

    Mais je ne vois pas du tout comment passer de byte[] à File même avec Buffer ou autre ...

    Auriez vous des pistes ?

    Merci

  2. #2
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Cela dépend de comment ton byte[] a été créé. S'il a été simplement créé en faisant des read simple (qui lit byte par byte), la méthode est simple : crée un FileReader pointant sur ton fichier, parcours ton tableau et à chaque élément, fait des FileReader.write(byte[i]).

  3. #3
    Membre Expert Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Par défaut
    Citation Envoyé par Rayndell
    Cela dépend de comment ton byte[] a été créé. S'il a été simplement créé en faisant des read simple (qui lit byte par byte), la méthode est simple : crée un FileReader pointant sur ton fichier, parcours ton tableau et à chaque élément, fait des FileReader.write(byte[i]).
    Mon byte[] a été créer par la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    /**
         * Retourne un tableau de byte du dossier à archiver (zip) dont le chemin est à passer en paramètre
         * @param String chemin du dossier a archiver
         * @param String chemin de la source en relatif
         * @return byte[] archive en tableau de byte
         * @throws SauvegardeBaseException 
         * @throws IOException 
         */
        public static byte[] genererArchive(String aCheminFichierAZipper, String vCheminSource) throws SauvegardeBaseException, IOException
        {
            byte[] vTableauArchiveRetour = null;
     
            //Generation du fichier zip dans un répertoire temporaire
            File vFichierCheminSource = new File(vCheminSource);
     
            String vRepertoireTemporaire = System.getProperty("java.io.tmpdir") + vFichierCheminSource.getParent();
     
            List<FichierArchive> vListFicherArchive = new ArrayList<FichierArchive>();
            String vRacine = new File(aCheminFichierAZipper).getParent();
            for (String vElementAArchiver : new File(new File(aCheminFichierAZipper).getParent()).list())
            {
     
                //on test si l'élément trouvé est un fichier ou un dossier.
                //si s'est un fichier, on l'ajoute à la liste, si s'est un dossier on le parcourt pour l'ajouter à la liste
                vListFicherArchive = listeRepertoire(vRacine, vElementAArchiver, vFichierCheminSource, vListFicherArchive);
            }
     
            File vFichierTemporaire = new File(vRepertoireTemporaire + "\\archiveExportDonneesTemporaire.zip");
            if (!vFichierTemporaire.exists())
            {
                new File(vFichierTemporaire.getParent()).mkdirs();
            }
            FileUtils.genererArchive(vListFicherArchive, vFichierTemporaire);
     
            File vFichierTemporaireARetourner = new File(vRepertoireTemporaire + "\\archiveExportDonneesTemporaire.zip");
            //Récupération du zip crée et transformation en tableau de byte[]
     
            // On crée un tableau de byte avec une longueur égal à la taille du fichier
            vTableauArchiveRetour = new byte[(int) vFichierTemporaireARetourner.length()];
            // on crée un BufferedInputStream, qui va nous permettre de lire plusieurs byte d'un coup 
            BufferedInputStream in = new BufferedInputStream(new FileInputStream(vFichierTemporaireARetourner));
            // On lit la totalité du ficher.
            //Le premier paramètre est le tableau de byte qui va recevoir les données,
            //le deuxième est la position dans le fichier où on commence à lire les données (donc zéro puisqu'on commence au début du fichier),
            //enfin le dernier paramètre est le nombre d'octet que l'on veut lire
            in.read(vTableauArchiveRetour, 0, (int) vFichierTemporaireARetourner.length());
     
            return vTableauArchiveRetour;
        }
    Je vais essayer avec un FileReader.

    Merci

  4. #4
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Désolé ma langue (enfin mon clavier) a fourché. Je voulais bien entendu parler d'un FileWriter.

  5. #5
    Membre Expert Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Par défaut
    Citation Envoyé par Rayndell
    Désolé ma langue (enfin mon clavier) a fourché. Je voulais bien entendu parler d'un FileWriter.
    En fait, pas de méthoe write pour tableau de byte[] avec FileWriter (seulement char[]) donc j'ai utilisé FileOutputStream qui prend bien en compte cela.

    Est-ce correct ?

  6. #6
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Oui. Désolé, j'ai posté sans prendre le temps de bien réfléchir. FileOutputStream permet en effet d'écrir des suites d'octets.

  7. #7
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Oui,
    En Java il faut bien distinguer les flux binaires des flux de caractères.
    Pour plus d'informations : java.io

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Socket][File] Envoyer un tableau de byte
    Par itsmii dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 30/01/2014, 09h10
  2. Transformer Byte en String
    Par MaitrePylos dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 27/09/2013, 08h51
  3. Image byte[] to File
    Par pjmorce dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 24/10/2007, 12h50
  4. Transformer D:\Path\File au format Internet
    Par bluemanca dans le forum Langage
    Réponses: 0
    Dernier message: 16/10/2007, 17h18
  5. Réponses: 2
    Dernier message: 27/10/2006, 15h35

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