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 :

RandomAccessFile lecture incorrecte de fichier


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Par défaut RandomAccessFile lecture incorrecte de fichier
    Salut à tous, je vous écris car j'ai un petit problème avec la classe RAF.
    En effet je veux lire les derniers octets d'un fichier mp3 et les afficher et j'utilise le code suivant:
    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
    import java.io.RandomAccessFile;
    import java.io.*;
    public class Tag{
    	public static void main (String [] args)throws FileNotFoundException, IOException
    	{
    		int i;
    		int [] tab;
    		RandomAccessFile test = new RandomAccessFile("piste.mp3", "rw");
    		System.out.println("La durée "+test.length());
    		for (i=(int)(test.length()-128); i<= test.length(); i++)
    		{
    			System.out.println(test.read());
    		}
    	}
    }
    Bon la propreté du code n'est peut être pas parfaite.
    Mais voilà lorsque j'execute j'ai un problème il ne liste que des -1 et génère un fichier mp3 vide.
    Si quelqu'un a un idée merci

  2. #2
    Membre chevronné Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Par défaut
    Tu peux lire plus aisément de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import java.io.RandomAccessFile; import java.io.*; 
    public class Tag{  public static void main (String [] args) {  
    int i; int [] tab; 
    RandomAccessFile test = new RandomAccessFile("piste.mp3", "rw"); 
    System.out.println("La durée "+test.length()); 
    tab = new int[test.length()];
    try{ 
     i = 0; 
     while(tab[i++] = test.read() != -1); 
    } catch(IOException e) { e.printStackTrace(); } //(...)

  3. #3
    Membre confirmé Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Par défaut
    Euh je ne comprend pas bien ta réponse. Personnelement, je trouve pas ça plus lisible au contraire mais bon chacun sa façon de coder.
    Là je suis à l'iut, et je ne peux pas tester ton code j'ai aps dee mp3 sous la main mais j'ai tenté de compiler et j'ai eu quelques erreurs que je vais corriger plus tard.
    Si quelqu'un d'autre à d'autres propositions ou si tu as d'autres propositions broumbroum je veux bien.

  4. #4
    Membre confirmé Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Par défaut
    Après un petit tets chez moi ça ne marche pas.
    J'ai corrigé ton code et j'en ai fait ça
    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
    import java.io.RandomAccessFile;
    import java.io.*; 
    public class Tag2{  
    	public static void main (String [] args) throws IOException
    	{  
    		int length;int i; int [] tab; 
    		RandomAccessFile test = new RandomAccessFile("piste.mp3", "rw"); 
    		System.out.println("La durée "+test.length()); 
    		length = (int)(test.length());
    		tab = new int[length];
    		try{ 
    		i = 0; 
    		while(tab[i++] == test.read() && test.read()!= -1); 
    		} 
    		catch(IOException e) { e.printStackTrace(); } //(...)
    	}
    }
    Seulement, il me crée toujours le fichier mp3 vide au lieu de m'afficher les bits.
    J'ai aussi cette erreur Java.lang.ArrayIndexOutOfBoundsException.
    On a pas encore vu les tableaux à l'iut donc si vous pouviez m'éclairer, merci.

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Là il y a un problème (tu fais deux read() de suite):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(tab[i++] == test.read() && test.read()!= -1);

  6. #6
    Membre chevronné Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Par défaut
    J'ai modifié comme suit:
    Citation Envoyé par broumbroum
    Tu peux lire le fichier plus aisément de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import java.io.RandomAccessFile; import java.io.*; 
    public class Tag{  public static void main (String [] args) {  
    int i; int [] tab; 
    try{ // "try" déplacé pour attraper le FNotFound, car la methode read bloque
    RandomAccessFile test = new RandomAccessFile("piste.mp3", "rw"); 
    System.out.println("La durée "+test.length()); 
    tab = new int[test.length()];
     
     i = 0; 
     while((tab[i++] = test.read()) != -1); // il y a des parathenses oubliées 
    } catch(IOException e) { e.printStackTrace(); } //(...)

Discussions similaires

  1. Lecture d'un fichier .dbf
    Par San Soussy dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 07/07/2004, 16h30
  2. Réponses: 6
    Dernier message: 02/09/2003, 15h12
  3. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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