Чтение определенных строк из текстовых файлов - PullRequest
0 голосов
/ 11 августа 2010

Я хочу прочитать 1-е, 4-е, 7-е и т. Д. (Каждые 3 строки) из текстового файла, но не уверен, как это сделать, поскольку nextLine () читает все последовательно Спасибо за ваши предложения?

Scanner in2 = new Scanner(new File("url.txt"));

while (in2.hasNextLine()) {
    // Need some condition here
    String filesURL = in2.nextLine();
}

Ответы [ 3 ]

8 голосов
/ 11 августа 2010

Используйте счетчик и оператор % (модуль), чтобы читалась только каждая третья строка.

Scanner in = new Scanner(new File("url.txt"));

int i = 1;

while (in.hasNextLine()) {
    // Read the line first
    String filesURL = in.nextLine();

    /*
     * 1 divided by 3 gives a remainder of 1
     * 2 divided by 3 gives a remainder of 2
     * 3 divided by 3 gives a remainder of 0
     * 4 divided by 3 gives a remainder of 1
     * and so on...
     * 
     * i++ here just ensures i goes up by 1 every time this chunk of code runs.
     */
    if (i++ % 3 == 1) {
        // On every third line, do stuff; here I just print it
        System.out.println(filesURL);
    }
}
5 голосов
/ 11 августа 2010

Вы читаете каждую строку, но только обрабатываете каждая третья:

int lineNo = 0;
while (in2.hasNextLine()) {
    String filesURL = in2.nextLine();
    if (lineNo == 0)
        processLine (filesURL);
    lineNo = (lineNo + 1) % 3;
}

lineNo = (lineNo + 1) % 3 будет циклически проходить от lineNo до 0,1,2,0,1,2,0,1,2,..., и строки будут обрабатываться только когда он равен нулю (таким образом, строки 1, 4, 7, ...).

2 голосов
/ 11 августа 2010

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

Вы уверены, что цель состоит не только в / output / 1-й, 4-й, 7-й и т. Д. Строках? Вы можете читать все строки последовательно, но оставляйте только те, которые вас интересуют.

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