2012-08-31 140 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目錄也可以跨平臺保持一致。