- Scanner is text parser which used to parse primitives & strings using regular expression.
- Scanner split the input into token using delimiter pattern.
- Default pattern delimiter is whitespace.
- We will write content to a file using FileWriter class.
- Then, we will read content from as file using Scanner class.
- Scanner class extends object & implements Closeable & Iterable interface.
Scanner class hierarchy is as follows:

Scanner class constructors (Java IO):
No. | Constructors | Description |
---|---|---|
1 | Scanner(File source) | Constructs a new Scanner that produces values scanned from the specified file. |
2 | Scanner(File source, String charsetName) | Constructs a new Scanner that produces values scanned from the specified file. |
3 | Scanner(InputStream source) | Constructs a new Scanner that produces values scanned from the specified input stream. |
4 | Scanner(InputStream source, String charsetName) | Constructs a new Scanner that produces values scanned from the specified input stream. |
5 | Scanner(Path source) | Constructs a new Scanner that produces values scanned from the specified file. |
6 | Scanner(Path source, String charsetName) | Constructs a new Scanner that produces values scanned from the specified file. |
7 | Scanner(Readable source) | Constructs a new Scanner that produces values scanned from the specified source. |
8 | Scanner(ReadableByteChannel source) | Constructs a new Scanner that produces values scanned from the specified channel. |
9 | Scanner(ReadableByteChannel source, String charsetName) | Constructs a new Scanner that produces values scanned from the specified channel. |
10 | Scanner(String source) | Constructs a new Scanner that produces values scanned from the specified string. |
Important methods of Scanner class (Java IO):
No. | Methods | Description |
---|---|---|
1 | boolean hasNext() | Returns true if this scanner has another token in its input. |
2 | boolean hasNextDouble() | Returns true if the next token in this scanner's input can be interpreted as a double value using the nextDouble() method. |
3 | boolean hasNextFloat() | Returns true if the next token in this scanner's input can be interpreted as a float value using the nextFloat() method. |
4 | boolean hasNextInt() | Returns true if the next token in this scanner's input can be interpreted as an int value in the default radix using the nextInt() method. |
5 | String next() | Finds and returns the next complete token from this scanner.. |
6 | String nextLine() | Moves scanner position to the next line & returns the value as a string. |
7 | byte nextByte() | Scans the next token of the input as a byte. |
8 | short nextShort() | Scans the next token of the input as a short. |
9 | int nextInt() | Scans the next token of the input as a short. |
10 | long nextLong() | Scans the next token of the input as a long. |
11 | float nextFloat() | Scans the next token of the input as a float. |
12 | double nextDouble() | Scans the next token of the input as a double. |
Program: Write file & read file in java using Scanner class (example)
package org.learn.io.scan; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class ReadFileUsingScanner { public static void main(String[] args) throws IOException { //Write content to file writeFileContents(); //Reading content of file using Scanner class readFileContents(); } private static void writeFileContents() throws IOException { try (FileWriter fileWriter = new FileWriter("info.txt")) { fileWriter.write("10 "); fileWriter.write("20.5 "); fileWriter.write("Employee "); fileWriter.write("50.00 "); fileWriter.write("Coffee"); } } private static void readFileContents() throws IOException { System.out.println("Reading contents of file using Scanner class:"); try (FileReader fileReader = new FileReader("info.txt"); Scanner scanner=new Scanner(fileReader)){ while (scanner.hasNext()) { if(scanner.hasNextInt()) { System.out.println(scanner.nextInt()); } else if(scanner.hasNextDouble()) { System.out.println(scanner.nextDouble()); } else if(scanner.hasNext()) { System.out.println(scanner.next()); } } } } }
Output: Read file in java using Scanner class (example)
Reading contents of file using Scanner class: 10 20.5 Employee 50.0 Coffee