title: How to Solve Java Error "The system cannot find the path specified"?
body: <p>I'm running Mac OS X and the code works. My teammate is running Windows 7 and he gets the error (even though the directory structure and file exists on his system). Any ideas? I have spent a number of hours on this and can't figure it out. Thank you.</p>
  
  <pre><code>import java.io.BufferedReader;
  import java.io.FileReader;
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.PreparedStatement; // Not used
  import java.sql.ResultSet; // Not used
  import java.sql.SQLException;
  import java.sql.Statement;
  import java.util.ArrayList; // Not used
  import java.util.Scanner; // Not used
  
  public class CreateDB {
  
     public CreateDB() {
     }
  
     public void createDB() {
  
        Connection conn = null;
  
        String url = "jdbc:mysql://localhost:3306/";
        String dbName = ""; // Not used (yet?)
        String driver = "com.mysql.jdbc.Driver";
        String userName = "root"; // Tell user userName is "root". OR/TODO: Change to something more secure?
        String password = ""; // Tell user password is "". Or/TODO: Change to something more secure?
        String line;
        String sqlDump = null;
        String [] sqlDumpArray;
  
        String fileSeperator = System.getProperty("file.separator");
        System.out.println("fileSeperator is: " + fileSeperator);  // Testing
        String path = System.getProperty("user.dir");
        System.out.println("path is: " + path); // Testing
        String pathToFile = (path + fileSeperator + "src" + fileSeperator + "files" + fileSeperator);
        System.out.println("pathToFile is: " + pathToFile); // Testing.
        String fileName = "create_db_and_tables.sql"; // NOTE: Rename file, if necessary. Make sure it's in right place.
        System.out.println("pathToFile + fileName is: " + pathToFile + fileName); // Testing.
  
        try {
           Class.forName(driver).newInstance();
           conn = DriverManager.getConnection(url, userName, password);
           System.out.println("Connected to the database.\n"); // Testing
  
           BufferedReader reader = new BufferedReader(new FileReader(pathToFile + fileName));
           line = reader.readLine();
           while (line != null) {
              sqlDump += line + "\n";
              line = reader.readLine();
           }
  
           System.out.println(sqlDump); // Testing
           sqlDumpArray = sqlDump.split(";");
           System.out.println("sqlDumpArray size is " + sqlDumpArray.length); // Testing
  
           for (int i = 0; i &lt; sqlDumpArray.length; i++) {
              System.out.println("\nsqlDumpArray[" + i + "] is: " + sqlDumpArray[i]);  // Testing
           }
  
           for (int j = 1; j &lt; sqlDumpArray.length -1; j++) {
              try {
                 Statement statement = conn.createStatement();
                 statement.addBatch(sqlDumpArray[j]);
                 statement.executeBatch(); // Could refactor or us another method
              }
              catch (SQLException e) {
                 System.err.println("SQLException: " + e.getMessage());
  
              }
              catch (Exception e) {
                 System.err.println("Exception: " + e.getMessage());
              }
           }
        }
        catch (java.lang.ClassNotFoundException e) {
           System.err.println("ClassNotFoundException: " + e.getMessage());
  
        }
        catch (SQLException e) {
           System.err.println("SQLException: " + e.getMessage());
  
        }
        catch (Exception e) {
           System.err.println("Exception: " + e.getMessage());
        }
        finally {
           try {
              // conn.commit(); // Not necessary
              conn.close();
              System.out.println("Successfully disconnected from database. Yeah!");
           }
           catch (SQLException e) {
              System.err.println("SQLException in 'finally' block: " + e.getMessage());
           }
        }
     }
     public static void main(String[] args) {
       CreateDB create = new CreateDB();
       create.createDB();
     }
  }
  </code></pre>
  
  <p>Users on Windows have received the error when when trying to execute the database creation process. This error occurs even when the path and file appear to be correct, such as what is returned by the following <code>System.out.println</code> statement in the file (highlighted below):</p>
  
  <pre><code>String fileSeperator = System.getProperty("file.separator");
  System.out.println("fileSeperator is: " + fileSeperator);
  String path = System.getProperty("user.dir");
  System.out.println("path is: " + path);
  String pathToFile = (path + fileSeperator + "src" + fileSeperator + "files" + fileSeperator);
  System.out.println("pathToFile is: " + pathToFile);
  String fileName = "create_db_and_tables.sql";
  System.out.println("pathToFile + fileName is: " + pathToFile + fileName);
  </code></pre>
  
  <p>This is an example of what that statement returns on a Windows 7 computer:</p>
  
  <pre><code>Exception: C:\Users\USER\workspace\mrbs2011a\src\files\create_db_and_tables.sql (The system cannot find the path specified)
  </code></pre>
  
  <p>That gets printed out even though USER has the file <code>create_db_and_tables.sql</code> located in the <code>src/files</code> folder.</p>