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.
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.
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.
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.
vous auriez un bon tuto à me proposer pour l'utilisation des fichiers?
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![]()
Bonjour,
voila, j'ai un fichier texte qui contient 2 champs (nom et age de la personne)
Contenu du fichier
ma question est, je voudrais savoir comment faire pour afficher seulement les personnes qui ont 20 ans et pas les autres.
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
Comment faire ?
Merci d'avance
jacko2
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...
je sais que c'est bizarre mais je n'ai malheureusement pas d'autres choix![]()
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.
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
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
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]; }
le return fonctionne bien et m'affiche tous les âges
voici l'appelle de ma méthode
je n'arrive pas à voir où est le problème
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>"); }
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part if ("20".equals(tab[1]))
oula !! je m'attendais pas à une réponse si rapide
ça fonctionne mieux merci![]()
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 :
mais cela ne m'affiche pas la ligne ou la valeur, cela m'affiche "116" ou autre valeur si je change dans raf.seek(...)
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();
Merci d'avance![]()
J'utilise pour la lecture (séquentielle ici) : StringBuffer et BufferedReader
mais pour les accès directs, ce ne serait pas mieux un FileInputStream ?
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.
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 ?
Partager