CSV java класс не работает

Я пытаюсь сделать класс, который будет помещать строки в CSV-файлы в массив при создании экземпляра. Однако в конечном итоге массив заполняется значениями null. Кроме того, мой код подсчета строк всегда считает шесть слишком высоко. Кто — нибудь видел Жуков?

public class CSV {

    private String [] []Data;
    public CSV( int linesSkip, String filename) throws IOException{
        Scanner in = null;
        int length = 0, width = 0;
        String input ="";

        try{            
            in = new Scanner (new BufferedReader(new FileReader(filename)));
            in.useDelimiter(",");
            while(in.hasNextLine()){
                input = in.nextLine();
                width++;
            }
        }catch (Exception e){
            System.out.println(e);
        }
        String[] inArray = input.split(",");
        length = inArray.length;
        //System.out.println(width-6+ " "+ length);
        String[][] data = new String[width-6][length];  
        int row=0;
        try{
            while(in.hasNextLine()){
                input = in.nextLine();
                String[] Arr = input.split(",");
                for(int i=0; i < Arr.length; i++){
                    data[row][i]=(Arr[i]);
                    System.out.print(data[row][i]);
                }
                row++;
            }
        }catch (Exception e){
            System.out.println(e);      
        }
        this.Data=data;
    }
    public static void main (String [] args) throws IOException{
        CSV test = new CSV (0,"test.rtf");

        System.out.println(test.Data[0][0]); //this should print the
    }
}

1 ответ

  1. Следует использовать библиотеку CSV:

    CSVReader reader = new CSVReader(new FileReader(filename));
    List<String[]> allLines = reader.readAll();
    
    for(String[] line: allLines){
        for(String field: line){
            System.out.print(field + "\t"); 
        }
        System.out.println();
    }
    

    Для кода выше необходима следующая зависимость maven:

    <dependency>
        <groupId>com.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>3.8</version> 
    </dependency>