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 :

Problème d'écriture fichier: ajout de bytes à 0


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 83
    Points : 61
    Points
    61
    Par défaut Problème d'écriture fichier: ajout de bytes à 0
    Bonjour,
    Lorsque je lis et réécris un fichier avec ce code (vraiment bête):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    byte[] bytes = Files.readAllBytes(Paths.get("monImage.jpg"));
    RandomAccessFile out = new RandomAccessFile("sortie.jpg", "rw");
    out.write(bytes);
    out.close();
    Je me retrouve avec un fichier qui fait le double du fichier d'entrée.
    Ce fichier semble bien s'écrire un moment, puis à la moiter, il est rempli uniquement de 0.

    J'utilise le RandomAccessFile (Et non, pas memory ) pour un code qui n'est pas encore implémenté (utilisation de pointeur pour se déplacer dans le fichier).

    Pourquoi mon fichier en sortie est deux fois plus lourd que mon fichier d'entrée ? D'où viennent ces 0 ?
    Merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hum. En principe cela ne peut arriver que dans les conditions suivantes :
    - le fichier "sortie.jpg" existait déjà avant,
    - faisait le double de la taille du fichier "monImage.jpg"
    - et ne contenait que des zéros dans la seconde moitié (la première étant de toute façon remplacée par le contenu de "monImage.jpg").

    Peu probable.

    Peut-être que :
    - en réalité, le code que tu utilises vraiment n'est pas celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    byte[] bytes = Files.readAllBytes(Paths.get("monImage.jpg"));
    RandomAccessFile out = new RandomAccessFile("sortie.jpg", "rw");
    out.write(bytes);
    out.close();
    Genre par exemple qu'il y ait un setLength() ou un seek() quelque part.

    - le close() du fichier qui n'est pas assuré par un try {}, a des conséquences imprévisibles avec le reste de ton programme qui essaie d'interagir avec le même fichier.

    - il y a un bug dans l'environnement Java que tu utilises. Il faudrait nous en dire plus pour qu'on puisse tester qu'on a le même problème. (Ce n'est pas le cas en JDK SE 1.7.0_45 pour Windows 64bits.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 83
    Points : 61
    Points
    61
    Par défaut
    J'ai honte !
    En effet, je n'ai pas m'y que le byte[] était compressé (avec une fonction).
    Il semblerai que le problème viennent de là et non de la sauvegarde du fichier.

    En effet, cette fonction semble me renvoyer le tableau d'origine + le tableau de byte réduit ...
    Le fait d'avoir zappé le test de cette fonction ... je me sens bien noobiné dis donc !

    En tout cas, merci de m'avoir guidé, j'ai pu trouvé facilement mon erreur (qui vient bien du tableau de byte).

    Merci !

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pense aussi à sécuriser tes close() avec des try { }.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Problème d'écriture fichier
    Par Leray dans le forum VB.NET
    Réponses: 1
    Dernier message: 13/10/2008, 18h35
  2. [SQL] problème d'écriture fichier texte
    Par liberty74 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/06/2007, 15h50
  3. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  4. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  5. [Servlet] Probléme écriture fichier
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h17

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