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

Entrée/Sortie Java Discussion :

[File][byte][read]


Sujet :

Entrée/Sortie Java

  1. #1
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut [File][byte][read]
    Bonjour,

    Voila j'ai parcouru le forum mais je n'ai pas trouvé de réponse à ma question.

    Voila , j'aimerai mettre un fichier dans un tableau de byte en utilisant la méthode read(byte[] b).
    avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    myFile //fichier recupéré .
    FileInputStream in = new FileInputStream(myFile);
    Long l = new Long(myFile.length());
     
    int tailleFichier  = l.intValue();
    byte[] b = new byte[tailleFichier]
    in.read(b);
     
    //utilisation de b
    Est ce que ce code vous semble juste?

    Comment je dois gérer cas si la taille de mon fichier excède la valeur max d"un int?

    Merci d'avance pour votre aide,

    @+

    Fabszn
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  2. #2
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Effectivement tu ne va pas pouvoir ouvrir en mémoire un fichier dont la taille en INT excèdera (32bits).

    Le solution que j'utilise pour ce genre de problème est d'utiliser un tableau d'une taille fixe et de faire un boucle sur le fichier

    Voici un bout de code qui va te permettre de comprendre. Attention, il s'agit d'ici d'un code d'une application que je suis entrain de développé, les classes invoquée ne sont pas toutes présentes de le standart JAVA. C'est seulement pour te montrer le transfert d'un fichier morceau par morceau.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    byte[] packetData = new byte[FIXEDSIZE];
    int toRead = (retour[1] - retour[0]) + 1;
    int restant = FIXEDSIZE;			
    while(toRead > 0){
    	if(toRead < restant) restant = toRead;
     
    	randomAccess.readFully(packetData,0,restant);
    	//on envoie l'header au client
    	outToClient.write(packetData, 0, restant);	
    	toRead = toRead - restant;
    }		
    outToClient.flush();
    packetData = null;
    8)

  3. #3
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Bonjour,

    Tout d'abord merci pour ta réponse.

    En fait le context de mon problème est le suivant:

    Je génére un fichier PDF (avec l'api JFO), dans un fichier temporaire pour ensuite l'envoyer via un flux HTTP à partir d'une servlet.

    En fait, je dois récupérer l'OutputStream de mon objet 'response'
    écrire dedans dela même façon que toi tu écris dans outToClient.

    puis 'flusher' tout ca..et le tour est joué!! c'est bien ça :

    Merci d'avance,
    @+

    Fabszn
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Tout fait, j'ai réaliser une application client/serveur utilisant le protocole HTTP et je me basais sur le même principe.

    Tu peux donc sans problème travailler de cette manière

  5. #5
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Merci bcp pour ton aide!

    @+

    Fabszn
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/04/2011, 12h30
  2. datafile number not processed because file is read-only
    Par medlfi dans le forum Administration
    Réponses: 1
    Dernier message: 25/01/2010, 16h50
  3. Problème 'end-of-file during read, unit 1'
    Par Invité dans le forum Fortran
    Réponses: 4
    Dernier message: 24/04/2008, 14h55
  4. [Erreur] Severe (24) : end of file during read
    Par manoro dans le forum Fortran
    Réponses: 2
    Dernier message: 11/01/2008, 12h25
  5. Erreur : end-of-file during read
    Par phy4me dans le forum Fortran
    Réponses: 3
    Dernier message: 09/05/2007, 19h59

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