我有一个文本文件。它有配置信息。此文件应保留在外部,以便随时可以更改此文件的内容。在运行时,应该从中读取内容。我正在使用netbeans,我尝试使用ClassLoader,在我构建之后,dist文件夹没有config_text.txt文件。有没有办法做到这一点,就像我们在netbeans中添加库文件(jar)一样?
答案 0 :(得分:1)
你怎么读?如果文件位于项目根目录(例如build.xml中),则可以像File f = new File("my file.txt");
那样访问它 - 但是NB不会移动它执行ist文件夹。
顺便说一下。建筑不会添加任何文件,但libs和你的jar到dist文件夹。也许你可以尝试改变蚂蚁脚本。请看一下build.xml
。
答案 1 :(得分:0)
如果将文件添加到NetBeans项目目录中的“src”文件夹中,则应将其自动放置在dist文件夹和您构建的任何jar中的相同位置。无论如何,它对我有用,我正在运行Windows 7x64和NetBeans 7.1.2,例如将文件放入:
*的NetBeansProjects \ PROJECT_NAME \ SRC \ PACKAGE_NAME \ config_text.txt
应自动将文件放在此处:
* \的NetBeansProjects \ PROJECT_NAME \建立\类\ PACKAGE_NAME \ config_text.txt
然后,您可以使用getResource()方法访问它。
编辑:
你的运行“清理和构建”而不仅仅是“构建”吗?第一个将删除“dist”文件夹中的所有内容并重新生成内容,第二个将重新创建Jar并将其他文件(例如config_text.txt)保留在原来的位置。
答案 2 :(得分:0)
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ConfigHandler {
private static final String PROPERTIES_FILE = "/home/myConfigFile.properties";
private static final Properties PROPERTIES = new Properties();
static {
loadPropertyFile(PROPERTIES_FILE);
}
private static void loadPropertyFile(final String path) {
InputStream is = null;
try {
is = new FileInputStream(path);
PROPERTIES.load(is);
} catch (IOException e) {
throw new RuntimeException("Failed to load property file", e);
} finally {
if (is != null) {
try {
is.close();
} catch (IOException ex) {
}
}
}
}
public void reLoadPropertyFile() throws IOException {
loadPropertyFile(PROPERTIES_FILE);
}
public static String getProperty(String key) {
return PROPERTIES.getProperty(key);
}
}
要在代码中的任何位置读取配置值:
String somePropertyValue = ConfigHandler.getProperty("someProperty");
要重新加载配置文件:
ConfigHandler.reLoadPropertyFile();
答案 3 :(得分:0)
我经常使用user.home
属性来创建配置文件。就我而言,我检查文件是否存在于user.home
目录中。如果没有,那么我从我的应用程序导出一个副本,或者将默认属性写入该文件。您可能想尝试这种方法。使用user.home
目录也可以跨平台保持一致。