Bonjour à tous ,
Voici mon code de principe initial et fonctionnel :
Ce code fonctionne et donc toutes les 2 secondes j'affiche une ligne de mon fichier.txt.
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 import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.StringTokenizer; public class Example { static String line; static boolean startNext = true; static String fichiersATelecharger; public static void main(String args[]) throws FileNotFoundException { Path chemin = Paths.get("d:", "fichier.txt"); FileReader fr = new FileReader(chemin.toString()); BufferedReader br = new BufferedReader (fr); try{ while ((line = br.readLine()) != null) { if (startNext){ StringTokenizer token = new StringTokenizer (line); while(token.hasMoreTokens()){ fichiersATelecharger=(token.nextToken()); telecharger(fichiersATelecharger ); } } } } catch (IOException e) { System.out.println (e.getMessage()); e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void telecharger ( String fichiersATelecharger ){ startNext = false; System.out.print(fichiersATelecharger); System.out.print("\n"); // simulation du temps de téléchargement try { Thread.sleep(2000); } catch (InterruptedException exception) { exception.printStackTrace(); } startNext = true; } }
contenu fichier.txt:
sortie console:chemin1
chemin2
chemin3
chemin4
Je voudrais maintenant que l'action de la méthode telecharger() s'exécute au travers d'un Thread:chemin1
(2s d'attente)
chemin2
(2s d'attente)
chemin3
(2s d'attente)
chemin4
(2s d'attente)
sortie console:
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.StringTokenizer; public class Example { static String line; static String fichiersATelecharger; static boolean startNext = true; public static void main(String args[]) throws FileNotFoundException { Path chemin = Paths.get("d:", "fichier.txt"); FileReader fr = new FileReader(chemin.toString()); BufferedReader br = new BufferedReader (fr); try{ while ((line = br.readLine()) != null) { if (startNext){ StringTokenizer token = new StringTokenizer (line); while(token.hasMoreTokens()){ fichiersATelecharger=(token.nextToken()); telecharger(fichiersATelecharger ); } } } } catch (IOException e) { System.out.println (e.getMessage()); e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void telecharger ( final String fichiersATelecharger ){ startNext = false; new Thread(new Runnable() { public boolean startNext ; @Override public void run() { Example.fichiersATelecharger = fichiersATelecharger; System.out.print(fichiersATelecharger); System.out.print("\n"); //simulation du temps de téléchargement try { Thread.sleep(2000); } catch (InterruptedException exception) { exception.printStackTrace(); } setStartNext(true); } public void setStartNext(boolean startNext) { Example.startNext = startNext; System.out.print(Example.startNext); } }).start(); } }
Dans ce cas je n'affiche que la première ligne de mon fichier.txt. Pourtant la valeur de Example.startNext est bien sur true ainsi que la valeur de startNext dans mon main (visible en debug avec un break point)chemin1
(2s d'attente)
true
Une aide ne serait pas de refus...merci d'avance
Partager