title: How to load files on multiple platforms properly using Java?
body: <p>I have a java swing database application which needs to be run on Windows and Linux. My database connection details are stored in a XML file and I load them.</p>
  
  <p>This application can load this properties on Linux properly but it is not working on Windows.</p>
  
  <p>How do I load files on multiple platforms properly using Java? </p>
  
  <hr>
  
  <p>This is the code:</p>
  
  <pre><code>PropertyHandler propertyWriter = new PropertyHandler();
  
  List keys = new ArrayList();
  keys.add("ip");
  keys.add("database");
  Map localProps = propertyWriter.read(keys, "conf" + File.separatorChar + "properties.xml", true);//if false load from the local properties
  
  //get properties from the xml in the internal package
  List seKeys = new ArrayList();
  seKeys.add("driver");
  seKeys.add("username");
  seKeys.add("password");
  
  Map seProps = propertyWriter.read(seKeys, "conf" + File.separatorChar + "properties.xml", true);
  
  String dsn = "jdbc:mysql://" + (String) localProps.get("ip") + ":3306/" + (String) localProps.get("database");
  jDBCConnectionPool = new JDBCConnectionPool((String) seProps.get("driver"), dsn, (String) seProps.get("username"), (String) seProps.get("password"));
  </code></pre>
  
  <p>File reader method:</p>
  
  <pre><code>public Map read(List properties, String path, boolean isConfFromClassPath)
  {
      Properties prop = new Properties();
      Map props = new HashMap();
      try {
  
          if (isConfFromClassPath) {
              InputStream in = this.getClass().getClassLoader().getResourceAsStream(path);
              prop.loadFromXML(in);
  
              for (Iterator i = properties.iterator(); i.hasNext();) {
                  String key = (String) i.next();
                  props.put(key, prop.getProperty(key));
              }
              in.close();
  
          } else {
              FileInputStream in = new FileInputStream(path);
              prop.loadFromXML(in);
  
              for (Iterator i = properties.iterator(); i.hasNext();) {
                  String key = (String) i.next();
                  props.put(key, prop.getProperty(key));
              }
              in.close();
          }
  
      } catch (Exception ex) {
          ex.printStackTrace();
      }
      return props;
  }
  </code></pre>