Bonjour , voici le code de lecture de fichier.
Je mets bien le fichier test.txt à la bonne place.
Et pourtant j'ai une erreur exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 run: Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:838) at java.util.Scanner.next(Scanner.java:1347) at Main.processLine(Main.java:50) at Main.processLineByLine(Main.java:25) at Main.main(Main.java:8) Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds)
merci de votre aide.
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 import java.io.*; import java.util.Scanner; public final class Main { public static void main(String... aArgs) throws FileNotFoundException { Main parser = new Main("C:\\Temp\\test.txt"); parser.processLineByLine(); log("Done."); } /** * @param aFileName full name of an existing, readable file. */ public Main(String aFileName){ fFile = new File(aFileName); } /** Template method that calls {@link #processLine(String)}. */ public final void processLineByLine() throws FileNotFoundException { Scanner scanner = new Scanner(fFile); try { //first use a Scanner to get each line while ( scanner.hasNextLine() ){ processLine( scanner.nextLine() ); } } finally { //ensure the underlying stream is always closed scanner.close(); } } /** * Overridable method for processing lines in different ways. * * <P>This simple default implementation expects simple name-value pairs, separated by an * '=' sign. Examples of valid input : * <tt>height = 167cm</tt> * <tt>mass = 65kg</tt> * <tt>disposition = "grumpy"</tt> * <tt>this is the name = this is the value</tt> */ protected void processLine(String aLine){ //use a second Scanner to parse the content of each line Scanner scanner = new Scanner(aLine); scanner.useDelimiter("="); if ( scanner.hasNext() ){ String name = scanner.next(); String value = scanner.next(); log("Name is : " + quote(name.trim()) + ", and Value is : " + quote(value.trim()) ); } else { log("Empty or invalid line. Unable to process."); } //(no need for finally here, since String is source) scanner.close(); } // PRIVATE // private final File fFile; private static void log(Object aObject){ System.out.println(String.valueOf(aObject)); } private String quote(String aText){ String QUOTE = "'"; return QUOTE + aText + QUOTE; } }
Partager