# Use BufferedReader::lines
# Description
Java 8 introduced BufferedReader::lines
(opens new window) to generate a stream of elements representing lines in the BufferedReader
.
This rule, replaces While-Loops and For-Loops that are using BufferedReader::readLine
to iterate through lines of a file by a stream generated with BufferedReader::lines
.
# Benefits
Using streams instead of loops improves the readability and makes the code more compact.
# Tags
# Code Changes
# While Loops
Pre
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("file.name.txt"))) {
String line;
while((line = bufferedReader.readLine()) != null) {
consume(line);
}
}
Post
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("file.name.txt"))) {
bufferedReader.lines().forEach(line -> {
consume(line);
});
}
# For Loops with initializer
Pre
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("file.name.txt"))) {
for(String line; (line = bufferedReader.readLine()) != null;) {
consume(line);
}
}
Post
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("file.name.txt"))) {
bufferedReader.lines().forEach(line -> {
consume(line);
});
}
# For Loops without initializer
Pre
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("file.name.txt"))) {
String line;
for(; (line = bufferedReader.readLine()) != null;) {
consume(line);
}
}
Post
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("file.name.txt"))) {
bufferedReader.lines().forEach(line -> {
consume(line);
});
}
Use a Java Refactoring Tool
No license required
You can review this refactoring on your code without a license by installing jSparrow to your Eclipse IDE. Install the plug-in from Eclipse IDE: Eclipse Marketplace.
System-wide Refactoring
Do you want to automate this refactoring (and many more) to your system-wide code? The automatic application of this system-wide refactoring can be unlocked by acquiring your jSparrow license.
# Properties
Property | Value |
---|---|
Rule ID | BufferedReaderLines |
First seen in jSparrow version | 3.3.0 |
Minimum Java version | 8 |
Remediation cost | 5 min |