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 :

Ecriture et lecture byte différente


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut Ecriture et lecture byte différente
    Bonjour !!

    Voilà, je prend les devant en vous disant que j'ai déjà regardé sur la FAQ car ça parait d'être un peu un cas d'école ^^'

    En fait, voilà le problème...

    Résumons ce que l'on a :
    - Un tableau de byte --> byte[] contenu
    - Une classe Fichier --> qui permet de créer un fichier avec un DataOutputStream, writeByte() !!

    Maintenant, le problème le voici, le tableau de byte est envoyé en argument du fichier, puis le Fichier crée le document !!

    Le problème est à la lecture semble-t-il !!
    Car j'écris bien en byte, et je lis avec un DataInputStream, readByte !!

    Donc j'écris et je lis en byte mais je n'obtiens pas le même résultat à la fin !!

    Si quelqu'un à une idée ??

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    On pourrait avoir un extrait de code correspondant à ce mystérieux problème ?
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    Oui bien sûr excusez-moi !!

    Voici dans un premier temps la class (listener) qui lit le fichier !!

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    class ImportListener implements ActionListener{
    		public void actionPerformed(ActionEvent e){
     
    			Object source = e.getSource();
     
     
    			JFileChooser chooser = new JFileChooser(".");
    			YFileFilter filtre = new YFileFilter(".rsay", "Fichier RSA Crypt");
    			chooser.addChoosableFileFilter(filtre);
    			File file;
     
    			if(chooser.showOpenDialog(null) ==JFileChooser.APPROVE_OPTION){
    				file = chooser.getSelectedFile();
    				if(chooser.getFileFilter().accept(file))
    				{
    					try {
     
    						DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
     
    						int i = 0;
    						int n = 0;
    						byte b;
     
    						while((i = dis.read()) != -1){
    							n++;
    						}
     
    						byte[] buf = new byte[n];
    						//System.out.println("n = "+n);
     
    						DataInputStream dis2 = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
     
    						//while((b = dis2.readByte()) != -1){
    						for(int j = 0; j < n; j++){
    							buf[j] = dis2.readByte();
    							//System.out.println("byte n°"+j+" = "+buf[j]);
    						}
     
     
    						dis.close();
    						dis2.close();
     
    						if(source == publickey){
    							keyPublic = buf;
    							System.out.println(new BigInteger(keyPublic).toString());
    						}else{
    							//keyPrivate = str.getBytes();
    						}
     
     
     
     
    					} catch (FileNotFoundException e1) {
    						e1.printStackTrace();
    					} catch (IOException e1) {
    						e1.printStackTrace();
    					}
    				}
    				else{
    					JOptionPane alert = new JOptionPane();
    					alert.showMessageDialog(null, "Erreur d'extension de fichier ! \nVotre chargement a échoué !", "Erreur", JOptionPane.ERROR_MESSAGE);
    				}
    			}
     
    		}
    	} // Fin de la class ImportListener
    Et là c'est la class Fichier !! (qui écrit le fichier ^^)

    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
     
    public void createkey(){
    		if(keyOrNotKey)
    			file = new File(nameKey+".rsay");
    		else
    			file = new File(nameKey+".txt");
     
    		DataOutputStream dos;
    		ByteArrayInputStream baos;
    		try{
     
    			dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
    			baos = new ByteArrayInputStream(key);
     
    			byte[] buf = new byte[8];
     
    			while(baos.read(buf) != -1){
    				for(int j =0; j <buf.length; j++){
    					dos.writeByte(buf[j]);
    				}
    			}
     
    			dos.close();
    			baos.close();
     
     
     
    		}catch(IOException e){
    			JOptionPane.showMessageDialog(null,"Impossible d'écrire le fichier !!", "RSA Crypt", JOptionPane.ERROR_MESSAGE);
    		}
     
     
    		exist = ifExist();
    	}

    Voilà, comme vous le verrez le projet est un projet perso en crant une interface, qui reprend la class "MyRSA" qui est sur le site, c'est avant tout pour m'entrainer et garder la main en java et aussi pour crypter mes fichiers ^^' enfin les fichiers texte ^^'

    Donc voilà le problème, il se peut que certains truc bug un peu dans le code du listener, j'ai mis de côté il y a quelques temps j'ai un contrôle de maths à réviser ^^'

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 097
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while((i = dis.read()) != -1){
    							n++;
    						}
    Aie Aie Aie Tu px faire ceci je pense ca sera un peu moins infâme si tu vx juste lire la taille a allouer (excuse)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File f = new File("toto");
    f.length();
    Alors pourquoi faire ca aussi ? je vois que tu écris a chaque fois 8 bytes. (Dans ce cas ci) Tu vas donc forcement devoir initialiser 8 bytes a la lecture sans devoir regarder la taille du fichier.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    lol comme je vous l'ai dis, j'ai tenté pas mal de choses ^^' donc le code n'est pas super !! xD

    Mais ce que je ne comprend pas, c'est que j'écris des byte et je lis des byte mais je n'obtiens pas les même tableau à l'entrée et à la sortie...

    Au début, je sais que j'avais fais une erreur car je faisais un getBytes() d'une String qui donc me renvoyais un tableau de byte égale à la chaine...

    Mais là, je génère un tableau de byte
    J'écris un tableau de byte en byte dans un fichier
    je lis ce fichier en utilisant readByte()
    MAIS je reconstruis un tableau de byte différent que celui généré...-__-'...

    Comment je fais...T_T !!

  6. #6
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Si j'ai bien compris, tu écris un tableau de byte dans un fichier et quand tu le lis, tu n'as plus le même tableau.

    Question 1 : est-ce que le fichier est bien écrit? (ça aidera pour localiser l'erreur)

    Question 2 : Quand tu dis que les deux tableaux sont différents, comment as-tu fait la comparaison?

Discussions similaires

  1. Ecriture et lecture en Byte
    Par anny0 dans le forum Langage
    Réponses: 3
    Dernier message: 07/03/2008, 11h21
  2. Ecriture et lecture dans un fichier
    Par laetous dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 23/08/2006, 17h59
  3. ecriture et lecture d'une memoire partagee en C++
    Par jlassiramzy dans le forum C++
    Réponses: 17
    Dernier message: 30/06/2006, 11h47
  4. [XSD] Ecriture d'un byte dans un XML
    Par Doodoo256 dans le forum Valider
    Réponses: 2
    Dernier message: 14/03/2006, 15h10
  5. Ecriture et lecture de fichiers
    Par nozvad dans le forum Général Python
    Réponses: 4
    Dernier message: 12/10/2004, 16h47

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