2012-08-07 7 views
14

मैं नीचे दिए गए कोड का उपयोग कर फ़ाइल सभी संपत्ति गुण में मौजूद नामों लोड करने के लिए कोशिश कर रहा हूँ में रिक्त स्थान के साथ संपत्ति नाम पढ़ने के लिए:कैसे जावा

for(Enumeration<String> en = (Enumeration<String>) prop.propertyNames();en.hasMoreElements();){ 

      String key = (String)en.nextElement(); 

      System.out.println("Property name is "+key); 
     } 

लेकिन मेरे गुण फ़ाइल नीचे सामग्रियां हैं:

username=

password=

Parent file name=

Child file name =

कोड मैं के रूप में उत्पादन हो रही है चलाने के बाद:

username password Parent Child

संपत्ति नाम रिक्त स्थान है, तो वह केवल पहला शब्द लौटने है ..

कर सकते हैं किसी भी एक कृपया मुझे बताएं कि यह कैसे करें?

+1

आप फ़ाइल को खुद को पढ़ सकते हैं, गन्दा, लेकिन यह इस मुद्दे पर आ जाएगा कि गुण प्रत्येक पंक्ति – MadProgrammer

+0

का अनुवाद कैसे करते हैं, धन्यवाद, मैं फ़ाइल पाठक का उपयोग करके गुण फ़ाइल को पढ़ने और regex के साथ विभाजित करने की कोशिश कर रहा हूं। – javanoob

उत्तर

31

आप अपनी संपत्ति फ़ाइल में रिक्त स्थान से बच सकते हैं, लेकिन मुझे लगता है कि यह बहुत बदसूरत दिखने लगेगा।

username=a 
password=b 
Parent\ file\ name=c 
Child\ file\ name=d 

आप split() या indexOf() या जो कुछ भी अपने दिल के साथ अपने स्वयं कार्यान्वयन लिखने की बेहतर हो सकता है भविष्य में किसी भी कीड़े और/या सिर दर्द से बचने के लिए चाहता है।

+1

java.util.Properties.load() विधि में विभाजक में कुछ बनाया गया है, जिसमें =, space,: यदि आप इनमें से किसी भी संपत्ति के नाम में उपयोग करना चाहते हैं, तो आपको इसे \ character से बचाना होगा। यह दुर्भाग्यपूर्ण है कि जावाडॉक्स वास्तव में इसका उल्लेख नहीं करते हैं, लेकिन अपाचे कॉमन्स-कॉन्फ़िगरेशन में प्रलेखन, जबकि इस विधि के लिए स्पष्टीकरण लागू नहीं होता है (कम से कम संपत्ति/मूल्य डिलीमीटर के संदर्भ में) http://commons.apache.org/configuration /apidocs/org/apache/commons/configuration/PropertiesConfiguration.html – Matt

+2

एक अर्द्ध यादृच्छिक अतिरिक्त: संपत्ति फ़ाइलों का उपयोग करते समय संपत्ति के अंत में अनपेक्षित व्हाइटस्पेस से बचने के लिए बहुत सावधानी बरतती है! यद्यपि '=' के आस-पास के सफेद स्थान को नजरअंदाज कर दिया गया है, अंत में सफेद जगह नहीं है और बालों को खींचने वाली बग का कारण बन सकती है। –

+0

आपके समय के लिए धन्यवाद cklab .. – javanoob

-1

ऐसा लगता है कि यह मेरे लिए ठीक काम कर रहा है;

Properties prop = new Properties(); 
    prop.setProperty("test1", "val1"); 
    prop.setProperty("test number 2", "val number 2"); 
    prop.setProperty("test 3", "val3"); 
    prop.setProperty("test #4", "val #4"); 
    for(Enumeration<String> en = (Enumeration<String>) prop.propertyNames();en.hasMoreElements();){ 
     String key = (String)en.nextElement(); 
     System.out.println("'" + key + "'='" + prop.getProperty(key) + "'"); 
    } 

और उत्पादन:

'test 3'='val3' 
'test number 2'='val number 2' 
'test1'='val1' 
'test #4'='val #4' 

आप जहाँ तक कि तुलना कर सकते हैं तुम्हारा के लिए सेटिंग यह जाता है हमारे प्रदर्शित के रूप में, के रूप में ही हो रहा है यहाँ मेरे कोड है। यदि आप कुछ भी नहीं देखते हैं, तो अपना पूरा कोड जोड़ें, और मैं एक नज़र डालेंगे

+4

लेकिन आप एक प्रॉपर्टी फ़ाइल से गुण नहीं पढ़ रहे हैं, जहां ओपी में समस्याएं हैं। –

5

Java.util.Properties में, '=', ':', या सफेद स्पेस कैरेक्टर गुण फ़ाइल से लोड होने पर कुंजी/मान डिलीमीटर होता है।

नीचे की विस्तृत जावाडोक हैं अपने public void load(Reader reader)

कुंजी लाइन में पात्रों के सभी पहली गैर सफेद स्थान चरित्र के साथ और अप करने के लिए शुरू करने के लिए, लेकिन सहित नहीं, पहले नहीं छोड़ा जाएगा 'शामिल = ',': ', या एक पंक्ति टर्मिनेटर के अलावा सफेद स्पेस वर्ण। इन सभी कुंजी समाप्ति पात्रों को में पिछले बैकस्लैश वर्ण से बचकर कुंजी शामिल किया जा सकता है। http://docs.oracle.com/javase/6/docs/api/

0

यह कैसे मैं यह कर रहा है: में

public class PropHelper { 
    final static String PROPERTY_FILEPATH = "blah/blah.properties"; 

    static String getPropertyWithSpaces(String property, String delimiter) { 
     try { 
      FileReader reader = new FileReader(PROPERTY_FILEPATH); 
      Properties propertiesObj = new Properties(); 
      propertiesObj.load(reader); 
      return propertiesObj.getProperty(property).replaceAll(delimiter, ""); 
     } catch (Exception ex) { 
      System.out.println("FATAL ERROR: " + ex.getMessage()); 
      System.exit(1); 
     } 

     return null; 
    } 
} 

कहीं।गुण फ़ाइल:

settings = ` ⚙ Settings ` 

इस तरह मैं इसे कहते:

System.out.println("|" + PropHelper.getPropertyWithSpaces("settings", "`") + "|"); 

इस विधि प्रमुख, आंतरिक और पीछे वाले स्पेस के साथ काम करता है। आनंद लें!