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

Collection et Stream Java Discussion :

Import et stockage de données dans une matrice ou tableau


Sujet :

Collection et Stream Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Import et stockage de données dans une matrice ou tableau
    Bonjour,

    J'ai l'habitude d'utiliser des logiciels d'analyse de données comme matlab ou originlab pour traiter des données, Dans le but d'évoluer et de créer un petit logiciel de traitement je commence à apprendre JAVA.

    Voici un exemple de mes données TEST.txt

    Dans ce fichier texte j'aimerais supprimer les deux premières lignes qui ne me servent à rien.

    Ensuite, il y a 6 colonnes par ligne sur mon fichiers texte que j'aimerais répartir dans une matrices ou dans un tableau de 6 colonnes et XX lignes.

    Comment réaliser un import de ce type?

    En vous remerciant pour votre aide !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je ne comprends pas bien : tu veux créer un nouveau fichier texte, ou le charger dans un tableau pour en faire je ne sais quoi dans ton programme ? Ton fichier est déjà constitué de ligne de 6 éléments, donc hormis la suppression des 2 premières lignes, pas besoin de charger quoique ce soit dans un tableau : il te suffit

    1. de lire le fichier ligne à ligne (voir FAQ Lire un fichier ligne à ligne, ou, éventuellement, comme ton fichier n'est pas très grand, récupérer directement les lignes par List<String> lignes = Files.readAllLines(Paths.get(nomfichier));
    2. sauter les 2 premières lignes (avec un compteur, et un test)
    3. écrire les autres dans un nouveau fichier (par BufferedWriter, même principe que pour lire, sauf qu'au lieu de readLine, on utilise write(String) pour écrire, et newLine() pour passer à la ligne


    Si tu as besoin de charger les lignes dans un tableau, tu peux utiliser la même méthode de lecture, puis découper la chaine selon le délimiteur ";", avec la méthode String.split(), en passant ";" en paramètre justement, le résultat étant un tableau de String. Si tu as besoin de convertir les String en double, tu peux utiliser Double.parseDouble( string ), mais il faut tenir compte du fait qu'il y a des valeurs "vides", que tu pourras tester avec la méthode isEmpty(), en ayant fait un trim() avant pour s'assurer que les espaces qui trainent éventuellement soit supprimées.
    Comme on ne peut pas connaître le nombre de lignes d'avance, et qu'il vaut mieux éviter de lire une première fois le fichier pour en connaitre le nombre de ligne, tu peux le charger dans une liste de tableau, et le convertir à la fin en tableau.

    Il y a également la méthode Files.lines() qui permet d'obtenir directement les lignes dans un stream et de faire le remplissage du tableau en une ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static Double[][] readFile(String file) throws IOException { // prend le chemin d'accès du fichier en paramètre de type String
     
        return Files.lines(Paths.get(file)) // charger toutes les lignes
                    .skip(2) // sauter les 2 première lignes
                    .map(line-> line.split(";")) // convertir en tableau de string en découpant selon les ;
                    .map(line-> Arrays.stream(line) // convertir le tableau de String en stream
                                      .map(s-> s.trim().isEmpty()?null:Double.valueOf(s)) // convertir les chaines en Double ou en null si vide
                                      .toArray(Double[]::new)) // reconvertir en tableau de Double
                    .toArray(nb-> new Double[nb][]); // convertir le résultat en tableau à 2 dimensions
     
    }
    (on utilise un tableau de Double, et non de double, pour pouvoir avoir des cellules à null pour des valeurs vides. Pour un tableau de double, il faudrait décider d'une valeur par défaut de remplacement.)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci pour toutes ces indications!

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/03/2010, 15h05
  2. stockage de données dans une table générique.
    Par Romers dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/09/2009, 09h11
  3. Accès et stockage des données dans une appli
    Par aristeas dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 18/01/2009, 21h55
  4. Réponses: 4
    Dernier message: 20/05/2008, 09h41
  5. Stockage de lignes dans une matrice
    Par S4sha dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/06/2006, 14h03

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