Bjr, Après avoir tester plusieurs tuto dispo sur différent site je n'arrive pas a m'en servir, j'ai un code et je voudrait pouvoir lire un ligne en préci, pouver vous m'aider ?
Des fois je suis en pls donc si besoin voici mon discord : robmat2005#6307
Impossible , pour pouvoir acceder directement a une ligne faudra lire le fichier en entier ( et le mettre dans un tableau par exemple ). La lecture est sequentiel , tu ne peux pas dire : va a la ligne 10 , sans lire les 9 premiere.
Impossible , pour pouvoir acceder directement a une ligne faudra lire le fichier en entier ( et le mettre dans un tableau par exemple ). La lecture est sequentiel , tu ne peux pas dire : va a la ligne 10 , sans lire les 9 premiere.
Sa je veux bien tout lire sa ne me gène pas mais il me faut plusieurs situation : il me faut lire la deuxième ligne, la troisième puis de la 5ème jusqu'a la fin. Que se soit dans un byte[] ou pas sa ne me gène pas. et
Zachee54 a écrit:
Montre-nous ce que tu as commencé, et on te dira comment le terminer.
voici ce que j'ai fait : ( je ne mais que le bout sur le quel je veux l'utiliser) :
File fKit = new File("plugins/Kitzs/Kits/" + s2s + ".txt");
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
for(String line; (line = br.readLine()) != null; ) {
// process the line(add it to a list)
}
}
// read line #2, #3, and #5 from the list
pourquoi lire en bytes ... lis le ligne par ligne ?
Tout d'abord, il faut que tu utilises des blocs try. C'est une bonne pratique de base chaque fois que tu ouvres des ressources (fichier, base de données, etc).
Ensuite, Java propose plusieurs classes qui permettent de lire des flux de données :
InputStream pour lire des octets
BufferedInputStream pour lire des octets avec un tampon mémoire (plus performant que d'aller solliciter le disque dur octet par octet)
InputStreamReader pour convertir un flux d'octets en flux de caractères
FileInputStream qui lit un flux d'octets depuis un fichier
FileReader qui permet de lire un fichier comme flux de caractères
BufferedReader pour lire un flux de caractères avec un tampon en mémoire.
Actuellement, ce que tu fais revient à utiliser un FileInputStream. Les nombres que tu obtiens sont les valeurs des octets écrits dans le fichier (Je rappelle qu'un fichier, ce n'est qu'une suite de 0 et de 1...).
Si on met tout ensemble, voilà ce que ça donne :
File file = ... // ton fichier
try (
FileReader fileReader = new FileReader(file);
BufferedReader bufReader = new BufferedReader(fileReader);) {
String ligne = bufReader.readLine();
...
// Ici je te laisse faire ce que tu veux pour lire les lignes suivantes
}
Tout d'abord, il faut que tu utilises des blocs try. C'est une bonne pratique de base chaque fois que tu ouvres des ressources (fichier, base de données, etc).
Ensuite, Java propose plusieurs classes qui permettent de lire des flux de données :
InputStream pour lire des octets
BufferedInputStream pour lire des octets avec un tampon mémoire (plus performant que d'aller solliciter le disque dur octet par octet)
InputStreamReader pour convertir un flux d'octets en flux de caractères
FileInputStream qui lit un flux d'octets depuis un fichier
FileReader qui permet de lire un fichier comme flux de caractères
BufferedReader pour lire un flux de caractères avec un tampon en mémoire.
Actuellement, ce que tu fais revient à utiliser un FileInputStream. Les nombres que tu obtiens sont les valeurs des octets écrits dans le fichier (Je rappelle qu'un fichier, ce n'est qu'une suite de 0 et de 1...).
Si on met tout ensemble, voilà ce que ça donne :
File file = ... // ton fichier
try (
FileReader fileReader = new FileReader(file);
BufferedReader bufReader = new BufferedReader(fileReader);) {
String ligne = bufReader.readLine();
...
// Ici je te laisse faire ce que tu veux pour lire les lignes suivantes
}
Après avoir utiliser ton code voici le messge que je reçoit : 64_LOG 64_LOG 64_LOG 64_LOG 64_LOG 64_LOG 64_LOG 64_LOG
au lieu de :
Test 1 Kitzs.kit.test Item: DIRT, 64 SPRUCE_LOG, 64
Des fois je suis en pls donc si besoin voici mon discord : robmat2005#6307
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
for(String line; (line = br.readLine()) != null; ) {
// process the line(add it to a list)
}
}
// read line #2, #3, and #5 from the list
pourquoi lire en bytes ... lis le ligne par ligne ?
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
for(String line; (line = br.readLine()) != null; ) {
// process the line(add it to a list)
}
}
// read line #2, #3, and #5 from the list
Je ne suis pas sûr que le FileReader soit fermé automatiquement par le try-with-ressources au cas où l'instanciation du BufferedReader plante ? et aussi au cas où la méthode close() du BufferedReader plante ?
MathisBricolo a écrit:
Après avoir utiliser ton code voici le messge que je reçoit : 64_LOG 64_LOG 64_LOG 64_LOG 64_LOG 64_LOG 64_LOG 64_LOG
Tu peux nous montrer comment tu as complété mon code ? Parce que c'était juste une base de départ, pas une solution toute faite.
brubru777 a écrit:
Bonjour,
Pour lire un fichier texte proprement et simplement, cf l'excellent tuto de Pinguet
// Pour lire un fichier en une ligne
List<String> lines = Files.readAllLines(Paths.get("/path/to/file.ext"));
(avec un try/catch autour, bien sûr)
Génial ce tuto et cette solution !
Il faut juste être conscient que si le fichier est très gros, il ne pourra pas être lu en entier. Les autres méthodes ont l'avantage de traiter les lignes à la volée. Mais bon, pour un tuto de débutant, la question ne se pose pas.
mais c'est peut-être plus pour les programmeurs "avancés".
Ah oui, cette méthode renvoie effectivement un flux et pas une collection. +1
Lire une ligne précise d'un .txt
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Des fois je suis en pls donc si besoin voici mon discord : robmat2005#6307
Des fois je suis en pls donc si besoin voici mon discord : robmat2005#6307
pourquoi lire en bytes ... lis le ligne par ligne ?
Des fois je suis en pls donc si besoin voici mon discord : robmat2005#6307
Des fois je suis en pls donc si besoin voici mon discord : robmat2005#6307