Question

apologies in advance if this is a stupid question but I've created a window with a menubar and two menuitems....when i click on open i want to use JFileChooser to select a file from my computer but there's an unhandled exception type file not found error on my Scanner input

public void actionPerformed(ActionEvent e) {
    JFileChooser chooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter("text files", "txt");
    chooser.setFileFilter(filter);
    if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
        //get the selected file
        java.io.File file = chooser.getSelectedFile();
        //create scanner for the file
        Scanner input = new Scanner(file);
        //read text from file
        while (input.hasNext()) {
            System.out.println(input.nextLine());
        }
        //close the file
        input.close();
    } else {
        System.out.println("No file selected");
    }
}

I know i should enter a throws Exception but none of my methods will take it....My main method throws an IOException already. Thanks in advance

Was it helpful?

Solution

If you don't want to throw an exception, you will need to surround the code which generates it in a try-catch block, and handle the exception locally like this:

    if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
        //get the selected file
        java.io.File file = chooser.getSelectedFile();
        try {
            //create scanner for the file
            Scanner input = new Scanner(file);
            //read text from file
            while (input.hasNext()) {
                System.out.println(input.nextLine());
            }
            //close the file
            input.close();
        } catch (FileNotFoundException fnfe) {
            // handle exception here, e.g. error message to the user
        }
    } else {
        System.out.println("No file selected");
    }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top