Java 属性文件
出现lil问题时,我创建了一个属性文件: config.properties位于../resource/config.properties中 这是当前的文件:Java 属性文件,java,Java,出现lil问题时,我创建了一个属性文件: config.properties位于../resource/config.properties中 这是当前的文件: destinationPDF=D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/ destination="D:/Documents/NetBeansProjects/printing~subversion/fileupload/U
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");
它正在工作,没有EROR等,但destination和destinationPDF正在传递空值我想知道是什么问题……我测试了您的代码,工作正常……您是遇到编译错误还是运行时错误
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:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/
D:/Documents/NetBeansProjects/printing~subversion/fileupload/upload/
D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/Directory Files/directoryFiles.txt我想知道问题出在哪里……我测试了你的代码,它工作正常……你是遇到编译错误还是运行时错误
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:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/
D:/Documents/NetBeansProjects/printing~subversion/fileupload/upload/
D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/Directory Files/directoryFiles.txt问题在于:
// 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 + "/";
问题在于:
// 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 + "/";
您似乎误解了文件的属性。它们只是数据。它们不包含Java代码,也不用于声明变量。要在属性文件中获取与密钥destinationPDF关联的值,需要调用
String destinationPDF = prop.getProperty("destinationPDF");
初始化prop变量并使用prop.loadnew FileInputStream加载文件后。。。。然后您将有一个用键的值初始化的变量
旁注:请遵守Java命名约定:变量以小写字母开头。您似乎误解了属性文件是什么。它们只是数据。它们不包含Java代码,也不用于声明变量。要在属性文件中获取与密钥destinationPDF关联的值,需要调用
String destinationPDF = prop.getProperty("destinationPDF");
初始化prop变量并使用prop.loadnew FileInputStream加载文件后。。。。然后您将有一个用键的值初始化的变量
旁注:请遵守Java命名约定:变量以小写字母开头。不编译吗?或在运行时出现错误??此外,在您的目标属性上有开始引号,但没有结束引号。destination=D:/Documents是一个打字错误,或者您在属性文件本身中有类似的错误吗?我还假设它没有找到您的.properties文件位置。它显示的是什么stacktrace?你在什么地方定义了prop变量了吗?对不起,它根本没有编译,它给了我错误的定义是未定义的,是的,D:/是一种类型,在真实的文件中,如果你的编译错误是未定义的变量定义,则没有,您的错误不在上面发布的代码中。不编译吗?或在运行时出现错误??此外,在您的目标属性上有开始引号,但没有结束引号。destination=D:/Documents是一个打字错误,或者您在属性文件本身中有类似的错误吗?我还假设它没有找到您的.properties文件位置。它显示的是什么stacktrace?你在什么地方定义了prop变量了吗?对不起,它根本没有编译,它给了我错误的定义是未定义的,是的,D:/是一种类型,在真实的文件中,如果你的编译错误是未定义的变量定义,则没有,您的错误不在上面发布的代码中。您的代码比OP多得多。他缺少变量的声明和初始化。如果您在上面发布了我的代码,我想我没有加载prop,是这样吗?你的代码比OP多得多。他缺少变量的声明和初始化。如果你在上面发布了我的代码,我想我没有加载道具,是这样吗?是的,我注释掉了目标变量,因为我希望从属性文件中使用它,而不是在class@user2065929然后应该删除使用该未定义变量的代码,这就是为什么会出现目标未定义错误。@user2065929:您对属性有误解。参见JB Nizet的回答,他解释了为什么不能在代码中使用属性文件中的键作为变量名。@user2065929-您错误地认为加载pro
perty文件在代码中创建变量。事实并非如此。它创建的只是一个字符串值字典,您可以通过字符串键查找。是的,我注释掉了目标变量,因为我希望从属性文件中使用它,而不是在class@user2065929然后应该删除使用未定义变量的代码,这就是为什么会出现“目标未定义”错误。@user2065929:您对属性有误解。参见JB Nizet的回答,他解释了为什么不能在代码中使用属性文件中的键作为变量名。@user2065929-您错误地认为加载属性文件会在代码中创建变量。事实并非如此。它创建的只是一个字符串值字典,您可以通过字符串键查找。此外,我没有看到他调用他的loadProp方法。好的,我已经编辑了它,现在我没有收到任何错误,但是destination and DesictionPDF正在传递一个空值,而不是来自文件的值,有什么想法吗?在加载属性文件之前,您正在从prop对象读取值。因此,prop中还没有属性。很抱歉,我不明白,代码的哪一部分位于错误的位置?public String destinationPDF=prop.getPropertydestinationPDF;:一旦调用新的YourObject,该字段就会初始化。显然,此时还没有调用对象上的loadProp方法,因为该对象甚至还不存在。这就像你试图从你正在构建的接收者那里喝水一样。收件人必须先构造,然后填充,然后只有您才能喝其中包含的内容。此外,我没有看到他调用loadProp方法。好的,我已经编辑了它,现在我没有收到任何错误,但是destination and destination PDF正在传递空值,而不是文件中的值,有什么想法吗?在加载属性文件之前,您正在从prop对象读取值。因此,prop中还没有属性。很抱歉,我不明白,代码的哪一部分位于错误的位置?public String destinationPDF=prop.getPropertydestinationPDF;:一旦调用新的YourObject,该字段就会初始化。显然,此时还没有调用对象上的loadProp方法,因为该对象甚至还不存在。这就像你试图从你正在构建的接收者那里喝水一样。接收者必须先构建,然后填充,然后只有你才能饮用其中包含的内容。