How to read N amount of lines from a file?

19,654

Solution 1

You could try using a Scanner and a counter:

     ArrayList<Double> array = new ArrayList<Double>();
     Scanner input = new Scanner(new File("numbers.txt"));
     int counter = 0;
     while(input.hasNextLine() && counter < 10)
     {
         array.add(Double.parseDouble(input.nextLine()));
         counter++;
     }

This should loop through 10 lines adding each to the arraylist as long as there is more inputs in the file.

Solution 2

ArrayList<String> array = new ArrayList<String>();
//ArrayList of String (because you will read strings)
BufferedReader reader = null;
try {
    reader = new BufferedReader(new FileReader("numbers.txt")); //to read the file
} catch (FileNotFoundException ex) { //file numbers.txt does not exists
    System.err.println(ex.toString());
    //here you should stop your program, or find another way to open some file
}
String line; //to store a read line
int N = 5; //max number of lines to read
int counter = 0; //current number of lines already read
try {
    //read line by line with the readLine() method
    while ((line = reader.readLine()) != null && counter < N) { 
    //check also the counter if it is smaller then desired amount of lines to read
        array.add(line); //add the line to the ArrayList of strings
        counter++; //update the counter of the read lines (increment by one)
    }
    //the while loop will exit if:
    // there is no more line to read (i.e. line==null, i.e. N>#lines in the file)
    // OR the desired amount of line was correctly read
    reader.close(); //close the reader and related streams
} catch (IOException ex) { //if there is some input/output problem
    System.err.println(ex.toString());
}

Solution 3

See this How to read a large text file line by line using Java?

I think this will work:

BufferedReader br = new BufferedReader(new FileReader(file));
    String line;
    int i = 0;
    while ((line = br.readLine()) != null)
    {
        if (i < 5)
        {
            // process the line.
            i++;
        }
    }
    br.close();

Solution 4

List<Integer> array = new ArrayList<>();
try (BufferedReader in = new BufferedReader(
        new InputStreamReader(new FileInputStream("numbers.txt")))) {
    for (int i = 0; i < 5; ++i) { // Loops 5 times
        String line = in.readLine();
        if (line == null) [ // End of file?
            break;
        }
        // line does not contain line-ending.
        int num = Integer.parseInt(line);
        array.add(i);
    }
} // Closes in.
System.out.println(array);
Share:
19,654
Hilbis White
Author by

Hilbis White

Updated on June 04, 2022

Comments

  • Hilbis White
    Hilbis White almost 2 years

    I am trying to practice reading text from a file in java. I am little stuck on how I can read N amount of lines, say the first 10 lines in a file and then add the lines in an ArrayList.

    Say for example, the file contains 1-100 numbers, like so;

    - 1 
    - 2 
    - 3 
    - 4 
    - 5 
    - 6 
    - 7 
    - 8 
    - 9 
    - 10 
    - ....
    

    I want to read the first 5 numbers, so 1,2,3,4,5 and add it to an array list. So far, this is what I have managed to do but I am stuck and have no clue what to do now.

    ArrayList<Double> array = new ArrayList<Double>();
    InputStream list = new BufferedInputStream(new FileInputStream("numbers.txt"));
    
    for (double i = 0; i <= 5; ++i) {
        // I know I need to add something here so the for loop read through 
        // the file but I have no idea how I can do this
        array.add(i); // This is saying read 1 line and add it to arraylist,
        // then read read second and so on
    
    }