JAVA .properties文件

时间:2013-02-16 16:08:21

标签: java

有一个问题,我创建了一个属性文件:

config.properties位于../ resource / config.properties

这是当前的文件:

destinationPDF=D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/
destination="D:/Documents/NetBeansProjects/printing~subversion/fileupload/Uploaded/
fileList =D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/Directory Files/directoryFiles.txt

我完成了属性文件吗?

我也想访问这个文件并将变量加载到类

我试过了

public void loadProp() {
    try {
        prop.load(new FileInputStream("../resources/config.properties"));
        System.out.println(prop.getProperty("destinationPDF"));
        System.out.println(prop.getProperty("destination"));
        System.out.println(prop.getProperty("fileList"));

    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

但是现在这个类不会编译,因为它找不到变量目的地,例如,所以如何从文件中加载变量,我还需要在类中去掉变量吗?

抱歉,如果这些是愚蠢的问题,请第一次使用属性!

如果我输入的变量通常与

一样,我不会收到此错误
private String destinationPDF = "D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/"; //USE ON TORNADO//"D:/My Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/";//USE ON PREDATOR    

编辑:

现在有

private Properties configProp = new Properties();

public void loadProps() {
    InputStream in = this.getClass().getClassLoader().getResourceAsStream("../resources/config.properties");
    try {
        configProp.load(in);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

编辑2:

public void loadProp() {
    InputStream in = this.getClass().getClassLoader().getResourceAsStream("../resources/config.properties");
    try {
        prop.load(in);
        System.out.println(prop.getProperty("destinationPDF"));
        System.out.println(prop.getProperty("destination"));
        System.out.println(prop.getProperty("fileList"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Properties prop = new Properties();
private String destinationPDF = prop.getProperty("destinationPDF");
public String destination = prop.getProperty("destination");

它正在工作,没有错误等,但destination和destinationPDF正在传递空值

3 个答案:

答案 0 :(得分:3)

您似乎误解了属性文件是什么。他们只是数据。它们不包含Java代码,也不用于声明变量。要获取与属性文件中的键destinationPDF关联的值,您需要调用

String destinationPDF = prop.getProperty("destinationPDF");

初始化prop变量并使用prop.load(new FileInputStream(...))加载文件后。然后,您将使用键的值初始化变量。

附注:请尊重Java命名约定:变量以小写字母开头。

答案 1 :(得分:1)

问题出在这里:

        // destination = "D:/Documents/NetBeansProjects/printing~subversion/fileupload/Uploaded/";  // main location for uploads (CHANGE THIS WHEN USING PREDATOR)
        File theFile = new File(destination + "/" + username);
        theFile.mkdirs();// will create a sub folder for each user (currently does not work, below hopefully is a solution) (DOES NOW WORK)
        System.out.println("Completed Creation of folder");
        NewDestination = destination + username + "/";

您已在此处评论了目标变量:

NewDestination = destination + username + "/";

答案 2 :(得分:0)

我想知道这个问题是什么......我测试了你的代码,它工作得很好......你得到编译错误或运行时错误吗?

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;


public class Test1 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        new Test1().loadProp();
    }

    Properties prop = new Properties();

    public void loadProp() {
        try {
            prop.load(new FileInputStream("c:/Test/Computer.txt"));
            System.out.println(prop.getProperty("destinationPDF"));
            System.out.println(prop.getProperty("destination"));
            System.out.println(prop.getProperty("fileList"));

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

}

输出:

d:/文档/的NetBeansProjects /印刷〜颠覆/文件上传/网络/资源/ PDF / d:/文件/的NetBeansProjects /印刷〜颠覆/文件上传/上传/ D:/ Documents / NetBeansProjects / printing~subversion / fileupload / web / resources / Directory Files / directoryFiles.txt