Буферный ридер, Количество строк, Разделение, Разбор в Java - PullRequest
0 голосов
/ 07 декабря 2018

На самом деле, мне назначена задача, в которой у меня есть файл xyz.txt / CSV, в котором в основном будут числовые значения, и я должен передать его через BUFFERED READER, затем разделить эти значения и, наконец, проанализировать их.

Таким образом, у меня есть Java-код, который может помочь мне с этим.

package javaapplication12;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;

public class JavaApplication12 {   

    public static void main(String[] args) {

        String count= "F:\\Gephi\\number.txt";            
        BufferedReader br = null;
        FileReader fr = null;

        try {           
            fr = new FileReader(count);
            br = new BufferedReader                       

            // AT THIS POINT THERE SHOULD BE SOME THING THAT COUNTS NUMBER OF LINES USING COUNT++ OR SOMETHING LIKE THIS//    
            String sCurrentLine;    
            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }                            
        }             
        catch (IOException e) {
            e.printStackTrace();
        }
        finally {
                try {
                    if (br != null)
                       br.close();

                    if (fr != null)
                       fr.close();
                } 
                catch (IOException ex) {
                    ex.printStackTrace();
                }
        }            
     }
}
                // COMING TO THIS POINT THE ABOVE VALUES OF .TXT FILE SHOULD BE SPLIT USING SPLIT PARAMETER//
               // AFTER SPLITTING THE SPLIT VALUE SHOULD BE KEPT IN AN ARRAY AND THEN EVENTUALLY PARSED//

Или ЕСЛИ кто-нибудь может переписать код другим способом вышеуказанной проблемы, это также должно быть оценено.

1 Ответ

0 голосов
/ 07 декабря 2018

Вот мое решение с Java 8:

 import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.List;
 import java.util.stream.Collectors;

 public class BR {

 public static void main(String[] args) {
    String fileName = "br.txt";
    //for the csv format
    String regex = ", ";
    try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
        List<String[]> lines = br.lines()
                .map(line -> line.split(regex))
                .collect(Collectors.toList());

        parse(lines);
    } catch (IOException e) {
        e.printStackTrace();
    }

}

private static void parse(List<String[]> lines) {
    //Do your stuff here
}

 }

Инициализация BufferedReader находится в блоке try (этот подход называется try с ресурсами), поскольку BufferedReader реализует AutoCloseable (интерфейс), поэтомув случае возникновения исключения читатель закроется.

Метод br.lines () возвращает все строки из файла.В функции карты вы передаете линию, которая является рад в лямбда-выражении.Строка разделяется с помощью переменной split (для формата CSV это ',') и возвращается и собирается.

Результатом является список массивов строк, которые можно изменить в теле функции карты.

Для большей ясности я предлагаю вам ознакомиться с некоторыми учебными пособиями по Java 8, и вы полностью поймете, что происходит.

Это решение может не подходить для вашего уровня знаний (я полагаю), но надеюсь, что оно вдохновит вас на проверку некоторых более изощренных и современных подходов.

Хорошего дня.

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