2012-03-12 20 views
18

मैं डेटाबेस से गुण फ़ाइल पढ़ रहा हूं। मैंने java.util.Properties चेक किया और String उदाहरण से पार्स करने की कोई विधि नहीं है। इसे करने का कोई तरीका है?गुणों के रूप में पार्सिंग स्ट्रिंग

+0

फ़ाइल गुण का स्वरूप क्या है के साथ एक एकल डीबी स्तंभ

public Properties buildProperties(String propertiesFromString, String entrySeparator) throws IOException { Properties properties = new Properties(); properties.load(new StringReader(propertiesFromString.replaceAll(entrySeparator, "\n"))); return properties; } 

से गुण लोड करने के लिए इस कोड का उपयोग? – Ishmael

+1

एक डीबी से गुण फ़ाइल या गुण ?? – Dan

उत्तर

65

तुम java.util.Properties एक String से पढ़ने के लिए एक विधि नहीं है सही है कि - लेकिन वास्तव में यह अधिक सामान्य तरीकों कि एक InputStream या Reader से पढ़ा है।

तो आप load पर कॉल कर सकते हैं यदि आपके पास इनमें से किसी एक के रूप में String पेश करने का कोई तरीका है, यानी एक स्रोत जो प्रभावशाली ढंग से वर्णों को एक-एक करके सक्रिय करता है। ऐसा लगता है कि यह अस्तित्व में होना चाहिए, और वास्तव में यह करता है - java.io.StringReader

यह एक साथ लाना है, तो, काफी स्पष्ट है:

public Properties parsePropertiesString(String s) { 
    // grr at load() returning void rather than the Properties object 
    // so this takes 3 lines instead of "return new Properties().load(...);" 
    final Properties p = new Properties(); 
    p.load(new StringReader(s)); 
    return p; 
} 
+1

धन्यवाद एंड्रज, यह मुझे बदलने की कोशिश करने के घंटों के बाद और अमेज़ॅन एस 3 प्रोप्स फ़ाइल को गतिशील रूप से जेट्स 3t, भयानक और बहुत आसान सरल का उपयोग करने में मदद करता है। – oberger

0

हम एक ऐसी ही समस्या थी, ऊपर हमारे लिए काम नहीं किया।

नीचे, हालांकि, किया गया।

def content = readFile 'gradle.properties' 

Properties properties = new Properties() 
InputStream is = new ByteArrayInputStream(content.getBytes()); 
properties.load(is) 

def runtimeString = 'SERVICE_VERSION_MINOR' 
echo properties."$runtimeString" 
SERVICE_VERSION_MINOR = properties."$runtimeString" 
echo SERVICE_VERSION_MINOR 
+0

यह वास्तव में प्रश्न का उत्तर नहीं देता है। यदि आपके पास कोई अलग प्रश्न है, तो आप [प्रश्न पूछें] (http://stackoverflow.com/questions/ask) पर क्लिक करके पूछ सकते हैं। एक बार आपके पास पर्याप्त [प्रतिष्ठा] (http://stackoverflow.com/help/) हो जाने पर आप इस प्रश्न पर अधिक ध्यान आकर्षित करने के लिए [एक बक्षीस] (http://stackoverflow.com/help/privileges/set-bounties) भी जोड़ सकते हैं। क्या-प्रतिष्ठा)। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/13343062) –

+0

उपर्युक्त गुणों के रूप में स्ट्रिंग को पार्स करने के प्रश्न का उत्तर बहुत अधिक है। - हम तार की एक फ़ाइल ले - पार्स यह - गुण में सेट स्ट्रिंग्स वस्तुओं जो पाइप लाइन में कहीं भी इस्तेमाल किया जा सकता ग्रूवी के बराबर आपत्ति – user3265317

1

मैं एक साधारण परीक्षण

@Test 
public void testProperties() throws Exception { 
    Properties properties = buildProperties("A=1;B=2;Z=x",";"); 
    assertEquals("1", properties.getProperty("A"));   
    assertEquals("2", properties.getProperty("B"));   
    assertEquals("3", properties.getProperty("C","3"));   
    assertNull(properties.getProperty("Y")); 
    assertEquals("x", properties.getProperty("Z")); 
} 
संबंधित मुद्दे