title: Java Cannot Read From File
body: <p>I am writing a Java program that can take user entries and save them into an ArrayList, then use the ArrayList to open a series of webpages. The program should also be able to read in web addresses from a file. This is where I'm having issues.</p>
  
  <p>I'm currently gettting: The file bills.txt was not found. //the file is in my src folder</p>
  
  <pre><code>Exception in thread "main" java.lang.NullPointerException
      at PayBills.main(PayBills.java:92) //this is when the BufferdReader is closed
  </code></pre>
  
  <p>This isn't homework but the program shares concepts with a homework I am about to do, so I don't want to change anything fundamental about how I'm reading in the text. Any advice is appreciated!</p>
  
  <pre><code>import java.io.*;
  import java.util.ArrayList;
  
      public class PayBills implements Serializable
      {
          /*The purpose of this program is to assist the user in opening a series of webpages to
           * pay bills online. The user will be able to save and edit a list of webpages,
           * open the newly created list, or read a list from file.
           */ 
          public static void main(String[] args) throws IOException
          {
              char input1;
              String line = new String();
              ArrayList&lt;String&gt; list1 = new ArrayList&lt;String&gt;();
              Runtime rt = Runtime.getRuntime();
              String filename = new String();
  
              try
              {
               // print out the menu
               rt.exec( "rundll32 url.dll,FileProtocolHandler " + "http://www.google.com");
               printMenu();
  
               // create a BufferedReader object to read input from a keyboard
               InputStreamReader isr = new InputStreamReader (System.in);
               BufferedReader stdin = new BufferedReader (isr);
  
               do
               {
                   System.out.println("\nWhat action would you like to perform?");
                   line = stdin.readLine().trim();  //read a line
                   input1 = line.charAt(0);
                   input1 = Character.toUpperCase(input1);
                 if (line.length() == 1)   //check if a user entered only one character
                 {
                     switch (input1)
                     {
                     case 'A':   //Add address process to array
                         System.out.println("\nPlease enter a web address to add to list:\n");
                         String str1 = stdin.readLine().trim();
                         if(str1.startsWith("http://www.") || str1.startsWith("https://www."))
                             list1.add(str1);
                         else
                         {
                             System.out.println("Please enter a valid web address (starting with http:// or https://).");
                         }
                         break;
                     case 'D':    //Show current list
                         System.out.println(list1.toString());
                         break;
                     case 'E':    //Execute current list
                         //rt.exec( "rundll32 url.dll,FileProtocolHandler " + "http://www.speedtest.net");
                         for(int i = 0; i &lt; list1.size(); i++)
                         {
                             Process p1 = Runtime.getRuntime().exec("cmd /c start " + list1.get(i));                     
                         }
                         break;     
                     case 'R':   //Read list from file
                         System.out.println("\nPlease enter the filename to read: ");
                         {
                             filename = stdin.readLine().trim();
                         }
                         FileReader fr = null;
                         BufferedReader inFile = null;
                         try
                         {
                             fr = new FileReader(filename);
                             inFile = new BufferedReader(fr);
                             line = inFile.readLine();
                             System.out.println("Test2");
                             while(line != null)
                             {
                                 System.out.println("Test3");
                                 if(line.startsWith("http://www.") == false || line.startsWith("https://www.") == false)
                                     System.out.println("Error: File not in proper format.");
                                 else 
                                     list1.add(line);
                             }
                                 System.out.println(filename + " was read.");
                             }
                             catch(FileNotFoundException exception)
                             {
                                 System.out.println("The file " + filename + " was not found.");
                                 break;
                             }
                             catch(IOException exception)
                             {
                                 System.out.println("Error. " + exception);
                             }
                             finally
                             {
                                 inFile.close();
                             }  
  
                         break;
                     case '?':   //Display Menu
                         printMenu();
                         break;
                     case 'Q':    //Quit    
                         System.out.println("Goodbye!");
                         System.exit(0);
                     }//end switch
                 }//end if
              else
                  System.out.print("Unknown action\n");
               }//end do
               while (input1 != 'Q' || line.length() != 1);
              }
  
              catch(IOException e1) 
              {
                  System.out.println("Error: " + e1);
              }
          }//end main
          public static void printMenu()
          {
              System.out.print("Choice\t\tAction\n" +
                               "------\t\t------\n" +
                               "A\t\tAdd Web Address to List\n" +
                               "D\t\tDisplay Current List\n" +
                               "E\t\tExecute Current List\n" +
                               "R\t\tRead List from File\n" +
                               "?\t\tDisplay Menu\n" +
                               "Q\t\tQuit\n");
          }//end of printMenu()
  
      }//end PayBills
  </code></pre>
  
  <p>Edit: Ok, the program is no longer crashing because I fixed the NPE, but I am still getting "The file bills.txt was not found.", which is the caught exception. As stated above, the file is located in my src folder so the path should be correct.</p>