javaarraysfile-iostoring-data

Java read file and store text in an array


I know how to read a file with Java using Scanner and File IOException, but the only thing I don't know is how to store the text in the files as an array.

Here is a snippet of my code:

 public static void main(String[] args) throws IOException{
    // TODO code application logic here

    // // read KeyWestTemp.txt

    // create token1
    String token1 = "";

    // for-each loop for calculating heat index of May - October


    // create Scanner inFile1
    Scanner inFile1 = new Scanner(new File("KeyWestTemp.txt"));

    // while loop
    while(inFile1.hasNext()){

        // how can I create array from text read?

        // find next line
        token1 = inFile1.nextLine();

Here is what my KeyWestTemp.txt file contains:

70.3,   70.8,   73.8,   77.0,   80.7,   83.4,   84.5,   84.4,   83.4,   80.2,   76.3,   72.0   

Solution

  • Stored as strings:

    public class ReadTemps {
    
        public static void main(String[] args) throws IOException {
        // TODO code application logic here
    
        // // read KeyWestTemp.txt
    
        // create token1
        String token1 = "";
    
        // for-each loop for calculating heat index of May - October
    
        // create Scanner inFile1
        Scanner inFile1 = new Scanner(new File("KeyWestTemp.txt")).useDelimiter(",\\s*");
    
        // Original answer used LinkedList, but probably preferable to use ArrayList in most cases
        // List<String> temps = new LinkedList<String>();
        List<String> temps = new ArrayList<String>();
    
        // while loop
        while (inFile1.hasNext()) {
          // find next line
          token1 = inFile1.next();
          temps.add(token1);
        }
        inFile1.close();
    
        String[] tempsArray = temps.toArray(new String[0]);
    
        for (String s : tempsArray) {
          System.out.println(s);
        }
      }
    }
    

    For floats:

    import java.io.File;
    import java.io.IOException;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Scanner;
    
    public class ReadTemps {
    
      public static void main(String[] args) throws IOException {
        // TODO code application logic here
    
        // // read KeyWestTemp.txt
    
        // create token1
    
        // for-each loop for calculating heat index of May - October
    
        // create Scanner inFile1
        Scanner inFile1 = new Scanner(new File("KeyWestTemp.txt")).useDelimiter(",\\s*");
    
    
        // Original answer used LinkedList, but probably preferable to use ArrayList in most cases
        // List<Float> temps = new LinkedList<Float>();
        List<Float> temps = new ArrayList<Float>();
    
        // while loop
        while (inFile1.hasNext()) {
          // find next line
          float token1 = inFile1.nextFloat();
          temps.add(token1);
        }
        inFile1.close();
    
        Float[] tempsArray = temps.toArray(new Float[0]);
    
        for (Float s : tempsArray) {
          System.out.println(s);
        }
      }
    }