There are multiple ways we can read a file in Java. We can always do that using the good old classes such as FileReader, BufferedReader, or Scanner class.
However, in this lesson, we will explore other ways/libraries that make reading a file easier, and we are not required to write a lot of code.
We will cover the following ways:
- Using the Files.readAllBytes() method
- Using the Files.lines() method
- Using the InputStream and IOUtils classes
Read a file in Java using the Files.readAllBytes() method
We have the Files class from the java.nio.file package. This class consists exclusively of static methods that operate on files, directories, or other types of files.
In this example, we will use the readAllBytes() method to read the bytes from a file.
Example
Let’s say we have a file with the name “file1” in src/main/resources folder:
Hello! Some text here! Bye!
Now let’s read it using the Files.readAllBytes() method:
class Test { public static void main(String[] args) throws IOException { String content = new String(Files.readAllBytes(Paths.get("src/main/resources/file1.txt"))); System.out.println("Content of the file: \n" + content); } }
Read a file in Java using the Files.lines() method
Class Files also contains one useful method lines() that reads all lines from a file. We can use it together with the Java 8 forEachOrdered() method. This is basically a one-liner:
Example
class Test { public static void main(String[] args) throws IOException { Files.lines(Paths.get("src/main/resources/file1.txt")).forEachOrdered(System.out::println); } }
Read a file in Java using the InputStream and IOUtils
We can also use the toString() method from the IOUtils class that belongs to the Apache Commons library. This class provides static utility methods for input/output operations.
Note: You’ll need to add a dependency to your Maven project to use it. You can find it in the Maven repository.
The toString() method accepts an InputStream as the first parameter and the String, which represents a charset name, as the second. For this purpose, we don’t need to specify the charset name, so we will leave it null.
Example
class Test { public static void main(String[] args) throws IOException { try (FileInputStream inputStream = new FileInputStream("src/main/resources/file1.txt")) { String content = IOUtils.toString(inputStream, (String) null); System.out.println(content); } } }
Happy coding!