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
Version imprimable
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?
:faq: 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:
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(); } } }
:arrow:revient à faire :Code:
1
2
3
4
5 int comp3 = cont.compareTo("EDNSE1"); // Test if(comp3 == 0) { blabla }
:arrow: 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 ?Code:
1
2
3 if("EDLIBC".equals(cont) { blabla }
Merci pour la modif, c'est vrai que c'est plus simple ! :)
Non, je n'ai rien trouvé qui me permette de compter le nombre de champs dans iText, c'est ce que je voulais faire au début et du coup je me suis rabattu sur la fin de fichier... j'suis pas près de trouver ! Y me faudrait un petit miracle :lol:
Si tu as des questions concernant iText, le mieux est de faire une recherche ou refaire une demande précise dans le forum Documents ;)
OK, merci pour ton aide