2012-08-31 142 views
1

我有一个文本文件。它有配置信息。这个文件应该保存在外面,以便在任何时候可以改变这个文件的内容。运行时,应从中读取内容。我正在使用netbeans,我尝试使用ClassLoader,在构建后,dist文件夹没有config_text.txt文件。有没有这样做,就像我们在netbeans中添加库文件(jar)一样?配置文件的位置

+1

你是如何建立你的项目?你使用maven还是ant? – Ilya

+0

Netbeans默认使用ant,我认为 – FirmView

回答

1

你怎么看?如果该文件位于项目根目录(例如build.xml中),则可以像File f = new File("my file.txt");那样访问它 - 但NB不会将其移动到文件夹中。

Btw。建设不会添加任何文件,但库和您的jar文件夹。也许你可以尝试改变蚂蚁脚本。看看build.xml以及。

0

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

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

应该自动把这里的文件:

* \的NetBeansProjects \ PROJECT_NAME \建立\ classes \ PACKAGE_NAME \ config_text.txt

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

编辑:

难道说你运行一个“清理并生成”,而不仅仅是“建设”?第一个将删除“dist”文件夹中的所有内容并重新生成内容,第二个将仅重新创建Jar并将其他文件(例如config_text.txt)保留在原来的位置。

+0

你是对的,但我们使用dist文件夹向右分发应用程序? dist文件夹不包含config_text.txt – FirmView

+0

@FirmView它是,但它打包在Jar文件中。你需要它在罐子外面吗? –

+0

是的,所以用户可以更改配置文件的内容并运行应用程序 – FirmView

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();

0

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