Java从Web目录中读取属性文件

时间:2013-04-04 21:20:16

标签: java netbeans applet

我正在尝试从我的JAR本地目录中读取config.properties文件,该文件从网站运行。我尝试了一些不同的代码,从流式传输到获取类路径,等等。最后我正在尝试的是以下代码:

        FileInputStream f = new FileInputStream("./config.properties");
        if(f != null) {
            prop.load(f);
            db = prop.getProperty("database");
            dbuser = prop.getProperty("dbuser");
            dbpass = prop.getProperty("dbpass");
            host = prop.getProperty("host");
            iloc = prop.getProperty("iloc");
        }

这在从Netbeans内部进行测试和运行时完美评估,但第二次我把它放在网上并运行它,它不再找到配置文件,即使它是同一目录中的同一文件。我已尝试使用./而没有,但结果仍然相同。

3 个答案:

答案 0 :(得分:1)

你必须有一些绝对或一些运行时参数。我们所做的是将app home作为系统属性。因此当在Windows上启动java时它/ app1但在服务器上启动它的/ etc / app1

启动java或javaw时使用-D

java -Dapp.home=/etc/app1 -Dapp.other=somevalue my.package.AppMain

然后在我们的应用程序中,我们有一个FileUtils类,它在静态init中读取它并且有一个静态getter。

样品

public class FileUtils{
    private static File appHome = null;
    static{
        String home = System.getProperty("app.home");//-D that you specify or some standard that java has see javadoc
        if(home == null){
            //logger as needed
            home = "/app1";

        }
        appHome = new File(home);
    }


    public static File getAppHome(){
        return appHome;
        }


    ...

网站 - 运行java,因为Web服务器/应用服务器也有文件系统。如果您无法访问它,那么您也无法编辑配置吗?如果您知道配置的路径但无法更改java命令,则可以执行以下操作:

建议1 在您的开发系统上创建一个像/dev/randome4343433Name.txt这样的任意文件,如果这个文件存在,你知道你在开发中使用该路径,否则转到服务器中的路径。

建议2 或者使用服务器上的路径。 即使服务器是linux而dev是windows,你也可以这样做,只需使用这个斜杠/并在开发驱动器中创建相同的文件系统,但不要在代码中提及驱动器号。所以,如果在服务器上的/etc/app1/config.txt然后在驱动器本地,你开始创建一个etc \ app1文件夹并将配置放在那里,你的代码使用“/etc/app1/config.txt”

答案 1 :(得分:1)

对于java.applet.Applet或JApplet,使用获取嵌入此applet的文档的URL。然后创建一个新的URL添加config.txt的路径,打开URL上的输入流,你可以在客户端上读取该文件。

记住你所做的一切都在客户端,所以你不能回写,除非你在服务器上有一个jsp页面,并使用applet中的一些安全性(密码)连接到该页面

答案 2 :(得分:0)

在commons-configurations jar中有这个类:

PropertiesConfiguration cfg = new PropertiesConfiguration(“filePath”);

检查一下