Вопрос-ответ

How to read a specific line using the specific line number from a file in Java?

Как прочитать определенную строку, используя определенный номер строки, из файла на Java?

Существует ли в Java какой-либо метод для чтения определенной строки из файла? Например, прочитать строку 32 или любой другой номер строки.

Переведено автоматически
Ответ 1

Для небольших файлов:

String line32 = Files.readAllLines(Paths.get("file.txt")).get(32)

Для больших файлов:

try (Stream<String> lines = Files.lines(Paths.get("file.txt"))) {
line32 = lines.skip(31).findFirst().get();
}
Ответ 2

Если у вас нет предварительных знаний о строках в файле, нет способа напрямую получить доступ к 32-й строке, не прочитав 31 предыдущую строку.

Это верно для всех языков и всех современных файловых систем.

Таким образом, вы будете просто читать строки, пока не найдете 32-ю.

Ответ 3

Насколько я знаю, нет, но что вы могли бы сделать, так это перебрать первые 31 строку, ничего не делая, используя функцию readline() BufferedReader

FileInputStream fs= new FileInputStream("someFile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
for(int i = 0; i < 31; ++i)
br.readLine();
String lineIWant = br.readLine();
Ответ 4

Иоахим, конечно, прав, и альтернативной реализацией Крису (только для небольших файлов, потому что он загружает весь файл) может быть использование commons-io из Apache (хотя, возможно, вы не захотите вводить новую зависимость только для этого, хотя, если вы сочтете это полезным и для других вещей, это может иметь смысл).

Например:

String line32 = (String) FileUtils.readLines(file).get(31);

http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html#readLines(java.io.File, java.lang.Строка)

java