Utilisation de la classe Scanner
Salut à tous,
je viens de découvrir la classe Scanner et j'essaie de l'utiliser pour lire un fichier .CSV.
voici une ligne du fichier en entrée :
Citation:
1,2545,1152,231,17/03/2000 04:00,G,0,-78.391,-9.454,1, 0.1,270,AGUILA REAL ,AGUILAREAL, 1, 4 ,4639.577,567.24,NA,NA,NA,NA
et voici le code de ma classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
public class LireFichier {
public LireFichier(String nomFichier) throws IOException{
Scanner sc;
PrintWriter pw = new PrintWriter(new FileWriter("test.txt"));
try {
sc = new Scanner(new File(nomFichier)).useDelimiter(",");
boolean eof = false;
while (!eof) {
//row names
System.out.println(sc.next());
System.out.println(sc.next());
System.out.println(sc.next());
//numero emb
System.out.println(sc.next());
//Datacion
pw.print(sc.next());
pw.print(",");
//clase
System.out.println(sc.next());
//tipo rec
System.out.println(sc.next());
//X
pw.write(sc.next());
pw.print(",");
//Y
pw.print(sc.next());
pw.print(",");
//NUMERO.ZON
System.out.println(sc.next());
//VELOCIDAD
pw.print(sc.next());
pw.print(",");
//RUMBO
pw.print(sc.next());
pw.print(",");
//EMBARCACIO
System.out.println(sc.next());
//BoatNAbb
System.out.println(sc.next());
//ref.voyage
System.out.println(sc.next());
//hora
pw.print(sc.next());
pw.print(",");
//Longmn
System.out.println(sc.next());
//Latmn
System.out.println(sc.next());
//duracion
System.out.println(sc.next());
//cambio.vel
String tmp = sc.next();
pw.print(tmp);
System.out.println("cambio.vel"+tmp);
pw.print(",");
//distancia
String tmp2 = sc.next();
pw.print(tmp2);
System.out.println("distancia"+tmp2);
pw.print(",");
//cambio.rumbo
String tmp3 = sc.next();
pw.print(tmp3);
System.out.println(tmp3);
//pw.print("\n");
}
sc.close();
pw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} |
}
à l'exécution, j'obtiens le message d'erreur suivant :
[QUOTE]
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1347)
at miseenformefichiersmatthieu.LireFichier.<init>(LireFichier.java:29)
at miseenformefichiersmatthieu.Main.<init>(Main.java:17)
at miseenformefichiersmatthieu.Main.main(Main.java:20)
Java Result: 1[
/QUOTE]
Globalement, je cherche à extraire que certaines colonnes du fichier d'entrée et de les reconduire dans un fichier de sortie...peut-être que d'autres classes que Scanner sont plus adaptées à mon pb ?
Merci d'avance