Leggere le ultime righe di un file in Java
Supponendo di avere un file semplice con questo contenuto:
aaaa
bbbb
cccc
Vogliamo leggere le ultime due righe usando Java.
Per velocizzare questa operazione ci viene in aiuto Apache Commons IO; se usate Maven:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
Qui sotto il codice:
import org.apache.commons.io.input.ReversedLinesFileReader;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
int numeroRigheDaLeggere = 2;
File file = new File("test.txt");
List<String> result = new ArrayList<>();
try (ReversedLinesFileReader reader = new ReversedLinesFileReader(file, StandardCharsets.UTF_8)) {
String line = "";
while ((line = reader.readLine()) != null && result.size() < numeroRigheDaLeggere) {
result.add(line);
}
result.forEach(x -> System.out.println(x));
} catch (IOException e) {
e.getMessage();
}
}
}
In pratica ReversedLinesFileReader legge il file contrario; noi gli indichiamo quante righe leggere.
Salviamo tutto in una lista, e poi la leggiamo.
Enjoy!
java maven apache commons reversedlinesfilereader
Commentami!