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

Java Discussion :

Manipulation de fichiers plats


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut Manipulation de fichiers plats
    Bonjour,

    J'ai une base de données Sybase dont les données ont été exportée dans des fichiers plats, je voudrais savoir comment manipuler les fichiers plats en Java.
    utiliser JDBC? (je penses pas mais je pose la question quand même

    merci d'avance.

  2. #2
    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 packages "java.io" ou "java.nio" contiennent tout ce qu'il te faut.
    Si la taille fichier est conséquente, pense à utiliser une classe de lecture bufferisée comme java.io.BufferedInputStream par exemple.
    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.

  3. #3
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Tu peux aussi passer par un driver ODBC (et donc utiliser JDBC).
    C'est pas du monstre de vitesse selon la base mais ça fonctionne bien.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    vous auriez un bon tuto à me proposer pour l'utilisation des fichiers?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    up

  6. #6
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    http://java.developpez.com/faq/java/

    PS : pas besoin des "up"s sur ce forum, si ta question a une reponse, quelqu'un va te la donner même si ton sujet est tout en bas

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    Bonjour,

    voila, j'ai un fichier texte qui contient 2 champs (nom et age de la personne)

    Contenu du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Personne1|20
    Personne2|18
    Personne3|38
    Personne4|20
    Personne5|29
    ma question est, je voudrais savoir comment faire pour afficher seulement les personnes qui ont 20 ans et pas les autres.

    Comment faire ?

    Merci d'avance

    jacko2

  8. #8
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 161
    Par défaut
    tu es sûr que tu ne peux pas utiliser la connexion à la base directement ? car utiliser les fichiers plats d'une base de données pour obtenir ce genre d'information me parait un peu bizarre...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    je sais que c'est bizarre mais je n'ai malheureusement pas d'autres choix

  10. #10
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par jacko2 Voir le message
    Contenu du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Personne1|20
    Personne2|18
    Personne3|38
    Personne4|20
    Personne5|29
    ma question est, je voudrais savoir comment faire pour afficher seulement les personnes qui ont 20 ans et pas les autres.
    Tu lis tout le fichier en chargeant les lignes dans des objets puis tu filtres.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    des objets de quel type ?
    Comment faire le filtre ?

  12. #12
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par jacko2 Voir le message
    des objets de quel type ?
    Comment faire le filtre ?
    Je ne vais pas t'apprendre le Java quand même
    Tu te crées ton propre objet de type Personne qui contient un nom et un âge par exemple.
    Pour filtrer tu reprends tes cours d'algo, tu parcoures la liste et tu enlèves ceux qui n'ont pas 20 ans...

  13. #13
    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
    Citation Envoyé par jacko2 Voir le message
    des objets de quel type ?
    Comment faire le filtre ?
    Un objet "Info" qui possède par exemple deux attributs : String pour le nom et int pour le nombre.
    Lis le fichier ligne par ligne. Pour chaque ligne, utilise "split" de la classe String.
    Ca te permet de construire un "Info" et de le stocker dans un "ArrayList".
    Enfin, pour chaque élément de ta liste, tu vérifies que les attributs de l'objet "Info" courant satisfont à tes critères

    EDIT : trop lent
    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.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    Bonjour,

    merci pour vos conseils
    j'ai utilisé le split() qui fonctionne mais cependant, lorsque je veux vérifier une valeur, cela ne fonctionne pas

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public static String splitFichier(String ligne) {
    		String tab[] = ligne.split("\\|");
     
    		if(tab[1] == "20") System.out.println(tab[0]);
    		return tab[1];
    	}
    c'est le 'if' qui ne fonctionne pas, je ne comprends pourquoi, je veux seulement afficher le nom de toutes les personnes ayant 20 ans par exemple

    le return fonctionne bien et m'affiche tous les âges
    voici l'appelle de ma méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String texte = "";				
             while((texte = entree.readLine()) != null) {
             tampon.append(splitFichier(texte) + "<br>");
             }
    je n'arrive pas à voir où est le problème

    merci d'avance

  15. #15
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ("20".equals(tab[1]))

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    oula !! je m'attendais pas à une réponse si rapide

    ça fonctionne mieux merci

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    Bonjour tout le monde
    c'est encore moi

    j'ai suivi tous vos conseilles et cela m'a permis de bien avancer dans mon projet.

    Maintenant j'ai une petite question, je voudrais savoir comment aire pour accéder directement à une valeur du fichier (par exemple, accéder à la ligne "Personne3|38" en connaissant "Personne3").

    est-ce que je dois faire une taille fixe pour mes champs ?

    j'ai déjà tenter ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    RandomAccessFile raf = null;
    File f = new File(reader.getCheminNomFichier());
     
    raf= new RandomAccessFile(f, "rw");
     
    raf.seek(3);
    System.out.println(raf.readByte());
     
    raf.close();
    mais cela ne m'affiche pas la ligne ou la valeur, cela m'affiche "116" ou autre valeur si je change dans raf.seek(...)

    Merci d'avance

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    J'utilise pour la lecture (séquentielle ici) : StringBuffer et BufferedReader
    mais pour les accès directs, ce ne serait pas mieux un FileInputStream ?

  19. #19
    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
    Si tu veux faire un accès direct à la bonne ligne, il faut que toutes tes lignes contiennent le même nombre d'octets.
    Ensuite, le BufferedInputStream est généralement préférable au FileInputStream car il lit par bloc et conserve un buffer interne. Selon ton utilisation, c'est à toi de voir. Le mieux étant de faire tes propres tests pour tes propres besoins
    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.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    et pour se positionner suivant une valeur connue?

    j'ai essayé le seek() pour un simple test mais il m'affiche seulement la 1ere ligne à partir du 5ème caractère
    Ex : "Coucou" ==> seek(5) affiche "u" et non la 5ème ligne

    mais si on a une valeur connue, comment faire pour atteindre directement la ligne concernée ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/08/2008, 14h45
  2. Manipuler une zone numérique dans un fichier plat
    Par desbrandesq dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 31/05/2007, 21h39
  3. [LG]Manipulation de fichiers
    Par yffick dans le forum Langage
    Réponses: 29
    Dernier message: 10/01/2004, 15h04
  4. Manipulation de fichiers - gestion d'extensions
    Par ulukai dans le forum Linux
    Réponses: 13
    Dernier message: 02/07/2003, 15h28
  5. Réponses: 2
    Dernier message: 18/01/2003, 17h06

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