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 :

Transfomer un File en byte[]


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 Transfomer un File en byte[]
    Bonjour,

    J'ai cherché, testé, recherché, retesté mais sans succès.

    J'ai un besoin simple : j'ai un fichier dont je connais le chemin et je souhaite le transformer en tableau de byte[].

    J'ai essayé avec plusieurs inputstream / outputstream &co mais je comprends pas grand chose !

    Quelqu'un pourrait-il m'éclaire

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Par défaut
    Cadeau :

    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
     
            static public byte[] StreamtoByteArray(Stream stream)
            {
                int offset = 0;
                int remaining = (int)stream.Length;
                byte[] data = new byte[remaining];
                while (remaining > 0)
                {
                    int read = stream.Read(data, offset, remaining);
                    if (read <= 0)
                        throw new EndOfStreamException();
                    remaining -= read;
                    offset += read;
                }
                return data;
            }
     
            static public byte[] FileToByteArray(string path)
            {
                FileStream fs = new FileStream(path, FileMode.Open);
                byte[] binary = StreamtoByteArray(fs);
                fs.Close();
                return binary;
            }
    Plus qu'à appeler FileToByteArray ! Par contre il me semble que y'a une technique un peu plus directe avec .NET 2, mais perso j'utilise ce qui est au dessus depuis un bon moment, et ça marche bien.

  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 TigrouMeow
    Cadeau :

    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
     
            static public byte[] StreamtoByteArray(Stream stream)
            {
                int offset = 0;
                int remaining = (int)stream.Length;
                byte[] data = new byte[remaining];
                while (remaining > 0)
                {
                    int read = stream.Read(data, offset, remaining);
                    if (read <= 0)
                        throw new EndOfStreamException();
                    remaining -= read;
                    offset += read;
                }
                return data;
            }
     
            static public byte[] FileToByteArray(string path)
            {
                FileStream fs = new FileStream(path, FileMode.Open);
                byte[] binary = StreamtoByteArray(fs);
                fs.Close();
                return binary;
            }
    Plus qu'à appeler FileToByteArray ! Par contre il me semble que y'a une technique un peu plus directe avec .NET 2, mais perso j'utilise ce qui est au dessus depuis un bon moment, et ça marche bien.
    Merci, par contre si je ne m'abuse, s'est pas du java

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Par défaut
    Pfiouuuuuuuuuuuu Ahah, bon j'espère que la logique est la même, que mon post serve à quelque chose

  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 TigrouMeow
    Pfiouuuuuuuuuuuu Ahah, bon j'espère que la logique est la même, que mon post serve à qqchose
    La logique oui mais les classe à utiliser non et s'est la que je bloque

  6. #6
    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
    Element de réponse trouvé sur un vieux vieux post (merci )

    http://www.developpez.net/forums/showthread.php?t=38795

  7. #7
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Il faut avoir l'esprit clair pour comprendre comment fonctionne tous ces Streams .

    Voici ce que je ferais (je sors ça de tête, c'est non testé, c'est juste pour te montrer la voie) :
    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
     
    /* On créer une nouvelle méthode qui retourne un tableau de byte
    et avec un trhows IOException afin de pouvoir gérer les erreurs à notre guise */
    public byte[] getArrayByteFromFile(File f) throws IOException {
    /* On récupère la taille du fichier en octet,
    donc le nombre de byte qu'on devra lire */
    int length = f.length();
    /* On crée un tableau de byte avec une longueur
    égal à la taille du fichier (logique non :mrgreen: ?)*/
    byte[] data = new byte[length];
    /* Partie intéressante : on crée un BufferedInputStream,
    qui va nous permettre de lire plusieurs byte d'un coup */
    BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
    /* 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,
    ici on donne length puisqu'on veut lire la totalité du fichier d'un coup. */
    int result = in.read(data, 0, length);
     
    return data;
    }

    Pour voir en détail la classe BufferedInputStream...


    La variable result contient -1 si la fin du fichier a été atteinte, autrement dit, si la lecture a réussie, cette variable doit contenir -1. Enfin, je crois.

    Bonne chance

    [edit] Arf, j'ai mis 7 minutes à rédiger mon post, j'ai pas vu que tu avais la réponse

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Par défaut
    Citation Envoyé par TigrouMeow Voir le message
    Pfiouuuuuuuuuuuu Ahah, bon j'espère que la logique est la même, que mon post serve à quelque chose
    Moi je développe en C#, et 5 ans plus tard, ton post m'aura été utile, merci !

    (Et merci Google )

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

Discussions similaires

  1. convert file to byte et vice versa
    Par mamsflex dans le forum Général Python
    Réponses: 1
    Dernier message: 09/03/2014, 08h54
  2. [Socket][File] Envoyer un tableau de byte
    Par itsmii dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 30/01/2014, 09h10
  3. [Batch] zero length file / zero byte file
    Par cppcpp1 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 28/05/2010, 12h38
  4. Réponses: 15
    Dernier message: 14/08/2009, 14h45
  5. Conversion Strinf file en Byte[]
    Par Tail dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 04/09/2006, 16h34

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