Reading a text file using scanner / reader / bufferedreader to read the numbers in the .txt file

advertisements

I'm trying to write a small program in java, that'll calculate surface are and volume of a sphere, based on the radius of the sphere. These radii comes from .txt file with a single column of numbers.

I've tried searching a bit for this: Reading numbers in java

The code example looks a bit complicated for me as I'm not yet comfortable and experienced in reading java code. I've also tried reading this one:

Opening and reading numbers from a text file

I get confused of the 'try' keyword, among other things, what is it there for?

Where the second example says File("file.txt"); Do I put in the path to my text file?

If anyone can point me to a tutorial that'll take a beginner through these things, I'd very much like to know.

Here is my code so far:

import java.io.*;

// This class reads a text file (.txt) containing a single column of numbers

public class ReadFile {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    String fileName = "/home/jacob/Java Exercises/Radii.txt";

    Scanner sc = new Scanner(fileName);

}

}

Best regards,

Jacob Collstrup


Here's a small, simple snippet:

Scanner in = null;
try {
    in = new Scanner(new File("C:\\Users\\Me\\Desktop\\rrr.txt"));
    while(in.hasNextLine()) {
        int radius = Integer.parseInt(in.nextLine());

        System.out.println(radius);
        // . . .
    }
} catch(IOException ex) {
    System.out.println("Error reading file!");
} finally {
    if(in != null) {
        in.close();
    }
}

A try-catch block is something used in Java to handle exceptions. You can read all about them, and why they are useful here: http://docs.oracle.com/javase/tutorial/essential/exceptions/


Of course, if you are using Java 7 or above, the previous code can be simplified using something called try-with-resources. This is a another type of try block, except this will automatically close any "autocloseable" streams for you, removing that ugly finally section of the code:

try (Scanner in = new Scanner(new File("C:\\Users\\Me\\Desktop\\rrr.txt"))) {
    while(in.hasNextLine()) {
        int radius = Integer.parseInt(in.nextLine());

        System.out.println(radius);
        // . . .
    }
} catch(IOException ex) {
    System.out.println("Error reading file!");
}

You can read more about try-with-resources here: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

The rrr.txt file should just have a single number on each line, something like this

10
20
30