//This Code is written bt Siwat Sirichai import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class CSVUtility { /** * reads all lines in given filename into an array of String * * @param filename * @return array of String, each element in array is each line in file * @throws FileNotFoundException */ public static String[] readFile(String filename) throws FileNotFoundException { // ENTER CODE HERE Scanner sc = new Scanner(new File(filename)); // Create a Scanner to take in the file at path filename int length = 0; //Create a length variable and initialize it to zero for (length = 0; sc.hasNext(); length++) //Find Line amount | Loop until there's no next line,each loop length++ sc.nextLine();// Go to the next line sc.close(); //Close the Scanner to prevent resource leak String[] fileData = new String[length]; //create a 1D array to store file data sc = new Scanner(new File(filename)); //Reinitialize the closed scanner for (int i = 0; i < length; i++) fileData[i] = sc.nextLine(); //Send line i to array fileData at index i-1 sc.close(); //Close the Scanner to prevent resource leak return fileData; //Return array filled with file data } /** * read given CSV file into 2D array of String * * @param filename CSV file * @param header true if CSV file has a header line. The first line is header. * The data start from second line. * @return * @throws FileNotFoundException */ public static String[][] readCSV(String filename, boolean header) throws FileNotFoundException { // ENTER CODE HERE String[] data = readFile(filename); //Read the file int lineOffset = header ? 1 : 0; //do we have header? if yes, start at line 2 String[][] csv = new String[data.length - lineOffset][]; for (int i = lineOffset; i < data.length; i++) //Go through all rows csv[i - lineOffset] = data[i].split(","); //Array.split(String delimiter) return a 1D array with each element seperated by the delimiter return csv; //Send back the CSV file } }