各位前辈请教一下我以前写的一个C/S项目打成了jar(大部分源代码以找不到了),现在由于数据库更改了密码不得不把jar解压更改代码再重新打包,于是就想用改成properties配制文件把一些需要更改的属性配制在里面,说做就做可写完了,又遇到新的问题了就是如何把这配制文件打包在包外面呀?

解决方案 »

  1.   

    你就把properties放在jar包外面,读取这个properties的时候注意一下相对于jar包的相对路径就可以了
      

  2.   

    我现在就是搞不清那相对路径该怎么写了,我的那db.properties文件放在jar外面的user文件夹里,我那读取配制文件的类在jar里的commom里,我还能用这种方式(InputStream in = getClass().getResourceAsStream("");)来读取配制信息吗?
      

  3.   


    Properties p = new Properties();
    p.load(new FileInputStream("../user/db.properties"));
    p.getProperty("username");
    p.getProperty("password");lib
     |_*.jar
     |
    user
     |_db.properties如果jar包在lib目录下,db.properties在user目录下就可以这样写../user/db.properties
    这个路径是相对于jar包所在路径的
    ../ 这代表 jar包所在目录的上级目录
      

  4.   


    package common;import java.io.PrintStream;
    import java.util.Properties;public final class Env extends Properties
    {    public static Env getInstance()
        {
            if(instance != null)
            {
                return instance;
            } else
            {
                makeInstance();
                return instance;
            }
        }    private static synchronized void makeInstance()
        {
            if(instance == null)
                instance = new Env();
        }    private Env()
        {
            java.io.InputStream is = getClass().getResourceAsStream("../user/db.properties");
            try
            {
                load(is);
            }
            catch(Exception e)
            {
                System.out.println();
                System.err.println("\u9519\u8BEF\uFF1A\u6CA1\u6709\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4db.property\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002");
                return;
            }
        }    private static Env instance;
    }
    谢谢 蓝色雪狐!
    可我这样写过可还是不能读取到里面的数据,请指教!!!
      

  5.   

    你可以用FileInputStream去读文件private Env() { try {
    InputStream is = new FileInputStream("../user/db.properties");
    load(is);
    is.close();
    } catch (Exception e) {
    System.out.println();
    System.err
    .println("\u9519\u8BEF\uFF1A\u6CA1\u6709\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4db.property\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002 ");
    return;
    }
    }
      

  6.   

    你可以用FileInputStream去读文件private Env() { try {
    InputStream is = new FileInputStream("../user/db.properties");
    load(is);
    is.close();
    } catch (Exception e) {
    System.out.println();
    System.err
    .println("\u9519\u8BEF\uFF1A\u6CA1\u6709\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4db.property\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002 ");
    return;
    }
    }