2009-02-07 78 views

回答

0

不是Java的人,而是從我能看到的.properties文件與僞裝的.INI文件類似;它具有名稱=值對,沒有部分名稱。你可以使用Delphi的TStringList來處理它;它具有名稱和值屬性。

例如,從屬性文件讀取的行:

MyProgramData=c:\documents and settings\DR\Application Data\MyApp 

我可以簡單地使用:

var 
    SL: TStringList; 
    MyDataPath: string; 
begin 
    SL := TStringList.Create; 
    try 
    SL.LoadFromFile('myapp.properties'); 
    MyDataPath := SL.Values['MyProgramData']; 
    finally 
    SL.Free; 
    end; 
    // Do something with MyDataPath 
end; 

對於過於迂腐的讀者,我並不是暗示的TStringList將允許您使用.properties文件的完整功能;它可能,但是,足夠你需要做的。 (正如我所說的,我不是一個Java人。)

+0

這不是一個有效的.properties文件。反斜槓是特殊的。閱讀java.util.Properties.load()函數的文檔。等號可以是關鍵名稱的一部分,但INI不支持這一點。行可以用反斜槓繼續。 – 2009-02-07 17:41:01

+0

嗯,羅布?我沒有說這是一個有效的.properties文件,我知道嗎? – 2009-02-07 17:44:02

4

曾經有一個名爲Gel的Java IDE。它是用Delphi寫的,它是一個好的IDE,所以我期望它能夠處理屬性文件。作者已經停止了該項目的工作。在他的blog post describing the project's cancellation中,他提到開放項目開源的前景,但它從未真正起飛。如果你問得很好,你可能會得到你正在尋找的那部分代碼。

如果您發現使用TStrings作爲接口的任何解決方案,請持懷疑態度。儘管該類具有NamesValues屬性,使其成爲處理鍵/值對的類時很有吸引力,但它不會與Java的屬性文件完全兼容。原因是Java允許「=」作爲密鑰名稱中的字符,並且TStrings類通過查找字符串中的第一個「=」字符來檢測名稱的結尾和值的開始。此外,Java屬性文件可以使用「:」作爲分隔符,甚至可以使用普通的空格。