Bonjour,
Je début en Java et je doit faire une boucle qui lit un fichier jusqu'à la fin du fichier. Comment faire pour savoir que je suis à la fin du fichier ?
Merci
Bonjour,
Je début en Java et je doit faire une boucle qui lit un fichier jusqu'à la fin du fichier. Comment faire pour savoir que je suis à la fin du fichier ?
Merci
Estce que cela répond à ta question?
Comment lire un fichier ligne par ligne ?
Non ça ne marche pas.
Je ne sais pas si cela change quelque chose mais j'utilise la libraire itext pour remplir les champs d'un formulaire pdf. Étant donné que des champs peuvent être rajouté au pdf il faut que je puisse les remplir sans modifier le programme. Il doit marché autant pour 10 champs que pour 100.
Et la seule solution à laquelle j'ai pensé c'est de chercher la fin du fichier...
Merci
Pourrais-tu montrer ton code avec lequel tu lis le fichier?
Voila mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import java.io.FileOutputStream; import com.lowagie.text.pdf.AcroFields; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfStamper; public class TestPDFformulaire { public static void main(String args[]) { String cont; String type; String num; String champ; String sourceFile = "C:\\Documents and Settings\\t0bmor\\Desktop\\CheckListe.pdf"; String targetFile = "C:\\Documents and Settings\\t0bmor\\Desktop\\Remplissage_test.pdf"; int i = 0; try { // we create a reader for a certain document PdfReader reader = new PdfReader(sourceFile); // create a new pdf document PdfStamper stamp1 = new PdfStamper(reader, new FileOutputStream(filePath)); AcroFields form1 = stamp1.getAcroFields(); //@SuppressWarnings("unused") while(stamp1.readLine() != null) { i++; // Converti "i" en string champ = Integer.toString(i); // Récupère le contenu du premier champ cont = form1.getField(champ); System.out.println(cont); //Comparaison int comp3 = cont.compareTo("EDNSE1"); int comp4 = cont.compareTo("EDLIBC"); // Test if(comp3 == 0) { form1.setField(champ, "Machine outil"); } else if(comp4 == 0) { form1.setField(champ, "Renault"); } else { // Copie tout ce qu'il y a avant '=' dans type type = cont.split("=")[0]; // Comparaison int comp1 = type.compareTo("NCCODC"); int comp2 = type.compareTo("NCNOMW"); if(comp1 == 0 || comp2 ==0) { // Copie tout ce qu'il y a apres '=' dans num num = cont.split("=")[1]; /* PLACER LA REQUETTE ICI */ // Rempli le champ "0" form1.setField(champ, num); // Récupère le contenu du champ cont = form1.getField(champ); } } } stamp1.close(); } catch (Exception de) { de.printStackTrace(); } } }
revient à faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int comp3 = cont.compareTo("EDNSE1"); // Test if(comp3 == 0) { blabla }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if("EDLIBC".equals(cont) { blabla }Ton problème n'est pas de détecter la fin du fichier mais d'être indépendant du nombre de champ si je comprend bien. form1 n'a pas de méthode getFields() qui renverrait une collection et que tu pourrais parcourir ?
Partager