1

我有一个文本文件。它有配置信息。此文件应保留在外部,以便随时更改此文件的内容。运行时,应从中读取内容。我正在使用 netbeans,我尝试使用 ClassLoader,在我构建之后,dist 文件夹没有 config_text.txt 文件。有没有办法做到这一点,就像我们在netbeans中添加库文件(jar)一样?

4

4 回答 4

1

你怎么读?如果该文件在您的项目根目录中(例如 build.xml 所在的位置),您可以像访问它一样访问它File f = new File("my file.txt");- 但 NB 不会将它移动到 do ist 文件夹中。

顺便提一句。building 不会将任何文件添加到 dist 文件夹中,而是将 libs 和您的 jar 添加到 dist 文件夹中。也许您可以尝试更改 ant 脚本。也来看看吧build.xml

于 2012-08-31T15:17:02.953 回答
0

我经常使用该user.home属性来创建配置文件。就我而言,我检查该文件是否存在于user.home目录中。如果没有,那么我从我的应用程序中导出一个副本,或者将默认属性写入文件。您可能想尝试这种方法。使用该user.home目录也可以使其跨平台保持一致。

于 2012-12-12T03:35:15.040 回答
0

如果您将文件添加到 NetBeans 项目目录中的“src”文件夹中,那么它应该自动放置在 dist 文件夹和您构建的任何 jar 中的相同相对位置。无论如何,它对我有用,我正在运行 Windows 7x64 和 NetBeans 7.1.2 例如将文件放在:

*NetBeansProjects\PROJECT_NAME\src\PACKAGE_NAME\config_text.txt

应该自动把文件放在这里:

*\NetBeansProjects\PROJECT_NAME\build\classes\PACKAGE_NAME\config_text.txt

然后,您可以使用 getResource() 方法访问它。

编辑:

可能是您运行“清洁和构建”而不仅仅是“构建”吗?第一个将删除“dist”文件夹中的所有内容并重新生成内容,第二个将重新创建您的 Jar 并将其他文件(例如 config_text.txt)保留在原处。

于 2012-08-31T15:37:41.047 回答
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();

于 2012-08-31T16:49:12.523 回答