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 :

Lire un fichier dbf


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut Lire un fichier dbf
    Bonjour,

    j'ai besoin de travailler sur un fichier dbf, j'ai donc voulu afficher ce dernier ligne par ligne pour voir ce que ça donnait 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
    12
    13
    14
    15
    16
    17
    18
     
    public void lireDbfResultat(){
    		try {
    			BufferedReader lecteurAvecBuffer = new BufferedReader(new FileReader(this.pathResultat));
    			String lineRead;
    			int nbLineRead=0;
    			while ((lineRead = lecteurAvecBuffer.readLine()) != null){
     
    					System.out.println("Ligne lu "+nbLineRead+" "+lineRead);
     
    				        nbLineRead++;
    			} 
    			lecteurAvecBuffer.close();
    			}catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    Sauf que à l'exécution il ne me lit que la première ligne (et encore avec des erreurs de caractères non compris).

    Plus il lit cette première ligne en 3 boucles.

    Arrivé à cette boucle là il plante

    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Unknown Source)
    at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
    at java.lang.AbstractStringBuilder.append(Unknown Source)
    at java.lang.StringBuffer.append(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at VerifLignesResultats.lireDbfResultat(VerifLignesResultats.java:25)
    at VerifLignesResultats.main(VerifLignesResultats.java:41)
    La ligne 25 est celle du while et 41 l'appel de la fonction.

    Il y a visiblement un problème avec le format mais je ne sais pas comment faire ça.

    Une idée ?

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Je précise que j'ai tenté de modifier l'extension en csv et même en txt mais le résultat reste le même...

    EDIT: La seule solution que j'ai pu temporairement mettre en place consiste à refaire un export depuis la base mais directement au format csv pour pouvoir lire les données....c'est long et assez fastidieux, alors si vous avez une solution moins barbares je suis preneur...

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Citation Envoyé par Amnael Voir le message
    Il y a visiblement un problème avec le format mais je ne sais pas comment faire ça.
    vu l'erreur ce n'est pas un problème de format.... c'est simplement que en faisant le "readLine" tu dépasses la taille de mémoire que tu as de disponible au niveau de la JVM !
    il est fort probable que la taille d'une ligne que tu lis soit beaucoup plus importante que ce que tu penses.

    Le format DBF, je ne le connais pas, mais c'est sûrement du binaire, il faut donc savoir comment le lire !
    As tu chercher s'il existait des APIs qui te permettent de le lire facilement ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Le format DBF, je ne le connais pas
    DBF c'est le format de fichier de données de DBase III ou DBase IV (précédent millénaire !!!)
    Il y a eu tellement d'applications utilisant ce format qu'il n'est pas étonnant de le voir encore circuler.

    Il faut une bibliothèque pour le lire (un peu comme comme POI pour lire du Excel).
    Perso, j'ai fait quelques tests avec http://xbasej.sourceforge.net/api/org/xBaseJ/DBF.html
    et le résultat est convenable.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    J'avais une trentaine de fichier à checker, je les ai tous fait à la main en les montant dans un SIG, j'ai pas trouvé d'autres solution --'

    S'il existe bien une librairie alors c'est dommage qu'elle ne soit pas incluse de base dans java...parce que du coup le problème est le même avec tous les langages pour lire ce genre de fichier.

    Puis je ne comprends pas l'intérêt de faire un export en dbf...quand tu veux intégrer ok, mais à l'export...

    Merci pour votre réponse en tout cas !

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Puis je ne comprends pas l'intérêt de faire un export en dbf
    Tu as dû tomber sur une application ancienne ou qui veut rester compatible avec d'anciens formats.
    C'est normal que java "de base" ne traite pas ce type de conversion.
    C'est le travail de bibliothèques additionnelles comme POI pour Excel.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

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

Discussions similaires

  1. Lire les fichiers dbase (.dbf) avec PHP 5.3
    Par renardchan dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/05/2013, 11h58
  2. C# lire une fichier DBF
    Par darckxeys dans le forum Windows Forms
    Réponses: 0
    Dernier message: 16/04/2010, 21h10
  3. Lire un fichier .dbf avec sqlite
    Par cdevl32 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/02/2009, 18h46
  4. Réponses: 5
    Dernier message: 02/02/2006, 23h31
  5. Lire le fichier du port série
    Par saibe dans le forum Linux
    Réponses: 7
    Dernier message: 09/04/2003, 09h29

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