text: I am completely new to java (just started this week). I am trying to read the csv file, "read_ex.csv", into an array. I have searched endlessly on the web/satckoverflow to find a way to read the file into an array. The best i have been able to do is read it in a streaming fashion, but I cant store it in an array due the variable size of the file. I belive that ArrayList is a method to deal with variable size array, but I don't know how to work with it. Essentially I want to be able to access the String array "values" after the while loop finishes.
  import java.util.Scanner;
  import java.io.FileNotFoundException;
  import java.io.File;
  public class sortarray {
  public static void main (String []agrs){
  String fileName= "read_ex.csv";
  File file= new File(fileName);
  try{
  Scanner inputStream= new Scanner(file);
  while(inputStream.hasNext()){
  String data= inputStream.next();
  String[] values = data.split(",");
  System.out.println(values[1]);
  }
  inputStream.close();
  }catch (FileNotFoundException e) {
  e.printStackTrace();
  }
  //This prints out the working directory
  System.out.println("Present Project Directory : "+ System.getProperty("user.dir"));
  }
  }
  Although using the Apache CSV library as mentioned by @Minjun.Y is perfectly fine, I try to provide a solution that is closer to your code and maybe easier for you to follow:
  import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class CsvParser { public static void main(String[] args) { String fileName= "read_ex.csv"; File file= new File(fileName); // this gives you a 2-dimensional array of strings List<List<String>> lines = new ArrayList<>(); Scanner inputStream; try{ inputStream = new Scanner(file); while(inputStream.hasNext()){ String line= inputStream.next(); String[] values = line.split(","); // this adds the currently parsed line to the 2-dimensional string array lines.add(Arrays.asList(values)); } inputStream.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } // the following code lets you iterate through the 2-dimensional array int lineNo = 1; for(List<String> line: lines) { int columnNo = 1; for (String value: line) { System.out.println("Line " + lineNo + " Column " + columnNo + ": " + value); columnNo++; } lineNo++; } } }
  Let's go through it step-by-step:
  I added 3 more imports:
  ArrayList,
  Arrays and
  List - you will see very soon for what they are good. They are all taken from the
  java.util library, a standard library that is available with every JDK.
  Every class name in Java starts with a capital letter (by convention - it will build with a small letter as well, but you should get used to this convention) - I "fixed" this in your code.
  I added a 2-dimensional array
  List<List<String>> lines = new ArrayList<>(). This might look a little confusing at first, but what it means is that we create a variable
  lines that holds the results of our parsing. The
  List<String> syntax means, that we have a generic type
  List that has a type parameter
  String - in other words: a list of strings. The whole
  List<List<String>> means we have a list of lists of strings, a 2-dimensional string array.
  With the
  lines.add(Arrays.asList(values)) in your
  while loop, we can add the lines that you parsed to this 2-dimensional array.
  Arrays.asList(values) transforms the
  String[] array into a
  List as we need it to be compatible to our
  List<List<...>> type. This allows your lines to have variable length.
  The last lines I added simply print the content of 2-dimensional array and should give you a good example for how to access the values in this array. If you need further help for this construct, check the foreach loop documentation.
  Given this as an input file (
  read_ex.csv):
  value_1-1,value_1-2,value_1-3,value_1-4 value_2-1,value_2-2,value_2-3,value_2-4 value_3-1,value_3-2,value_3-3,value_3-4 value_4-1,value_4-2,value_4-3,value_4-4 value_5-1,value_5-2,value_5-3,value_5-4
  The program will print the following output:
  Line 1 Column 1: value_1-1 Line 1 Column 2: value_1-2 Line 1 Column 3: value_1-3 Line 1 Column 4: value_1-4 Line 2 Column 1: value_2-1 Line 2 Column 2: value_2-2 Line 2 Column 3: value_2-3 Line 2 Column 4: value_2-4 Line 3 Column 1: value_3-1 Line 3 Column 2: value_3-2 Line 3 Column 3: value_3-3 Line 3 Column 4: value_3-4 Line 4 Column 1: value_4-1 Line 4 Column 2: value_4-2 Line 4 Column 3: value_4-3 Line 4 Column 4: value_4-4 Line 5 Column 1: value_5-1 Line 5 Column 2: value_5-2 Line 5 Column 3: value_5-3 Line 5 Column 4: value_5-4
  Hope this helps :)