Как прочитать конкретную строку, используя определенный номер строки из файла в Java? - PullRequest
84 голосов
/ 22 февраля 2010

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

Ответы [ 17 ]

1 голос
/ 05 января 2018

Используйте этот код:

import java.nio.file.Files;

import java.nio.file.Paths;

public class FileWork 
{

    public static void main(String[] args) throws IOException {

        String line = Files.readAllLines(Paths.get("D:/abc.txt")).get(1);

        System.out.println(line);  
    }

}
1 голос
/ 06 июля 2016

у меня работает Я объединил ответ Чтение простого текстового файла

Но вместо возврата строки я возвращаю LinkedList of Strings. Затем я могу выбрать нужную строку.

public static LinkedList<String> readFromAssets(Context context, String filename) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open(filename)));
    LinkedList<String>linkedList = new LinkedList<>();
    // do reading, usually loop until end of file reading
    StringBuilder sb = new StringBuilder();
    String mLine = reader.readLine();
    while (mLine != null) {
        linkedList.add(mLine);
        sb.append(mLine); // process line
        mLine = reader.readLine();


    }
    reader.close();
    return linkedList;
}
0 голосов
/ 12 апреля 2014

Они все не правы, я просто написал это примерно через 10 секунд. После этого мне удалось просто вызвать object.getQuestion ("белья") в методе main, чтобы вернуть любую строку, которую я хочу.

public class Questions {

File file = new File("Question2Files/triviagame1.txt");

public Questions() {

}

public String getQuestion(int numLine) throws IOException {
    BufferedReader br = new BufferedReader(new FileReader(file));
    String line = "";
    for(int i = 0; i < numLine; i++) {
        line = br.readLine();
    }
    return line; }}
0 голосов
/ 17 января 2012

Вы можете использовать LineNumberReader вместо BufferedReader. Пройдите через API. Вы можете найти методы setLineNumber и getLineNumber.

0 голосов
/ 25 марта 2017

Вы можете использовать функцию skip (), чтобы пропустить строки с самого начала.

public static void readFile(String filePath, long lineNum) {
    List<String> list = new ArrayList<>();
    long totalLines, startLine = 0;

    try (Stream<String> lines = Files.lines(Paths.get(filePath))) {
        totalLines = Files.lines(Paths.get(filePath)).count();
        startLine = totalLines - lineNum;
        // Stream<String> line32 = lines.skip(((startLine)+1));

        list = lines.skip(startLine).collect(Collectors.toList());
        // lines.forEach(list::add);
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    list.forEach(System.out::println);

}
0 голосов
/ 16 января 2013

Вы также можете взглянуть на LineNumberReader, подкласс BufferedReader. Наряду с методом readline, он также имеет методы setter / getter для доступа к номеру строки. Очень полезно отслеживать количество прочитанных строк при чтении данных из файла.

0 голосов
/ 03 октября 2015
public String readLine(int line){
        FileReader tempFileReader = null;
        BufferedReader tempBufferedReader = null;
        try { tempFileReader = new FileReader(textFile); 
        tempBufferedReader = new BufferedReader(tempFileReader);
        } catch (Exception e) { }
        String returnStr = "ERROR";
        for(int i = 0; i < line - 1; i++){
            try { tempBufferedReader.readLine(); } catch (Exception e) { }
        }
        try { returnStr = tempBufferedReader.readLine(); }  catch (Exception e) { }

        return returnStr;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...