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 :

Problème lecture fichier texte 315Mo


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut Problème lecture fichier texte 315Mo
    Bonjour.

    J'ai un souci concernant la lecture d'un fichier de format .txt d'une taille d'environ 315Mo...

    Sur un fichier moins conséquent j'ai réussi à effectuer une lecture comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try
             {
    InputStream ips=new FileInputStream(datamicrorna); 
    InputStreamReader ipsr=new InputStreamReader(ips);
    BufferedReader br=new BufferedReader(ipsr);
     
    String ligne;
     
    while ((ligne=br.readLine())!=null)
    {
    listlignesmirbase.add(ligne);
    }
    Cela fonctionne.

    Par contre si j'essaye de faire la même chose avec un autre fichier, de taille avoisinant les 315Mo, j'ai comme message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException
    Alors que j'utilise la même technique :

    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
    try
    {
    if (sourcepredictions == "human")
    	{sourcepredictions = humanpredictions;}
    else if (sourcepredictions == "mouse")
    	{sourcepredictions = mousepredictions;}
    					
    InputStream iii = new FileInputStream(sourcepredictions); 
    InputStreamReader jjj = new InputStreamReader(iii);
    BufferedReader kr = new BufferedReader(jjj);
    				
    String ligne2;
    while ((ligne2=kr.readLine())!=null)
    	{
    	listlignespredictions.add(ligne2);
    	}
    Si je mets au niveau de la ligne soulignée le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String ligne2 = kr.readLine();
    System.out.println(ligne2);
    Je récupère bien la première ligne de mon fichier. J'en ai donc déduis que c'est un problème de mémoire du logiciel ...

    Comment réussir à lire mon fichier de 315Mo ligne par ligne pour prendre ce qui m'intéresse ?

    Merci beaucoup !
    Bonne journée.

    Matt.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Citation Envoyé par phoenix420 Voir le message
    Par contre si j'essaye de faire la même chose avec un autre fichier, de taille avoisinant les 315Mo, j'ai comme message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException
    Quelle ligne, quelle stacktrace ?


    Citation Envoyé par phoenix420 Voir le message
    J'en ai donc déduis que c'est un problème de mémoire du logiciel ...
    Nope. Un soucis de mémoire fait un OutOfMemoryError.

    Citation Envoyé par phoenix420 Voir le message
    Comment réussir à lire mon fichier de 315Mo ligne par ligne pour prendre ce qui m'intéresse ?
    Si tu veux mon avis tu devrais regarder chaque ligne et voir si elle t'intéresse, plutôt que de toutes les garder en mémoire. Mais quoi qu'il en soit ton code a l'air correct.

    Il est probable que tu as juste oublié d'initialiser listlignespredictions.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    En fait Eclipse ne donne pas la ligne à laquelle il y a une erreur. Il met juste "java.lang.NullPointerException" sans rien dire d'autre :

    Nom : erreur.JPG
Affichages : 80
Taille : 14,8 Ko

    En fait je parcours mon fichier texte à la recherche d'un String particulier. J'affecte la ligne à une valeur. Une fois que je l'ai trouvé j'incrémente un compteur à chaque ligne lue jusqu'à trouver un String différent.

    Je fais cette opération en fait pour incrémenter deux compteurs qui me serviront à extraire de tout mon fichier une partie seulement de ce fichier, stockée dans une ArrayList ou un tableau. Voilà mon code :

    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
    InputStream iii = new FileInputStream(sourcepredictions); 
    InputStreamReader jjj = new InputStreamReader(iii);
    BufferedReader kr = new BufferedReader(jjj);
    				
    String ligne2;
    					
    while ((ligne2=kr.readLine())!=null)
    	{
    	listlignespredictions.add(ligne2);
    	}
    System.out.println(listlignespredictions);  // l'erreur est java.lang.NullPointerException
    					
    String[] tabdonneespredictions = (String[])listlignespredictions.toArray(new String[listlignespredictions.size()]);
    
    int pospremiernommicro = 0;
    int posderniernommicro;
    					
    // j'initialise pospremiernommicro, la première position du microRNA d'intérêt dans la liste
    while(!tabdonneespredictions[pospremiernommicro].regionMatches(tabdonneespredictions[pospremiernommicro].indexOf(" ", (tabdonneespredictions[pospremiernommicro].indexOf(" ", tabdonneespredictions[pospremiernommicro].indexOf(" ", tabdonneespredictions[pospremiernommicro].indexOf(" ", 0)))))+1, recherche , 0, longrecherche))
    {
    pospremiernommicro++;
    }

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ton objet listlignespredictions est de quel type ? C'est une classe à toi ?
    Si c'est le cas, donne nous la fonction "toString", ou même mieux : toute la source.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    listlignespredictions est une ArrayList de type String. Elle ne contient rien avant ce bout de code, justement c'est pour l'alimenter.

    Je ne l'ai pas initialisée, je pourrais l'initialiser à "null" mais cela ne changerait pas grand chose je pense car je n'ai pas eu besoin de le faire sur une ArrayList précédente.

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Les codes sources que tu as donné sont différents entre le test sur un petit fichier et le test sur le "gros" fichier de 315 Mo.
    Assure-toi de tester un même et unique programme pour ces deux fichiers textes différents, puis donne nous le code source complet de ton programme.
    Assure-toi également de nous donner la bonne ligne sur laquelle l'exception survient.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Citation Envoyé par phoenix420 Voir le message
    En fait Eclipse ne donne pas la ligne à laquelle il y a une erreur. Il met juste "java.lang.NullPointerException" sans rien dire d'autre :
    ? C'est plus qu'étrange.

    Citation Envoyé par phoenix420 Voir le message
    listlignespredictions est une ArrayList de type String. Elle ne contient rien avant ce bout de code, justement c'est pour l'alimenter.

    Je ne l'ai pas initialisée, je pourrais l'initialiser à "null" mais cela ne changerait pas grand chose je pense car je n'ai pas eu besoin de le faire sur une ArrayList précédente.
    Ne pas initialiser un membre c'est l'initialiser à null. Et ça provoque des NullPointerException.

    Il faut l'initialiser à une liste vide : new ArrayList<String>().
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Citation Envoyé par thelvin Voir le message
    ? C'est plus qu'étrange.
    +1.

    je soupçonne un bête "System.err.println(myexception)" dans le catch.

    Si oui, remplacer par "myexception.printStackTrace()"


  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ne pas initialiser un membre c'est l'initialiser à null. Et ça provoque des NullPointerException.

    Il faut l'initialiser à une liste vide : new ArrayList<String>().

    Ah super ! J'avais seulement oublié d'instancier mes ArrayList listlignespredictions et listlignesmrna ! Maintenant cela fonctionne.
    Merci beaucoup !!

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

Discussions similaires

  1. Problème lecture fichier texte
    Par nilsmatlab dans le forum MATLAB
    Réponses: 27
    Dernier message: 22/06/2011, 19h06
  2. Probléme lecture fichier text.
    Par deppierre dans le forum Windows
    Réponses: 7
    Dernier message: 15/12/2009, 20h11
  3. Problème de lecture fichier texte
    Par Draconic dans le forum Visual C++
    Réponses: 1
    Dernier message: 05/08/2007, 19h00
  4. Problème STL lecture fichier texte
    Par Bourrine dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/04/2007, 12h57
  5. [VB.NET]Problème lecture fichier texte
    Par zouhib dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/05/2006, 17h05

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