2012-10-21 25 views
12

के माध्यम से जावा फ़ाइल को पढ़ें और लिखें, मैं एक फ़ाइल को पढ़ने और लिखने की कोशिश कर रहा हूं लेकिन मैं उस फ़ाइल को संसाधन के माध्यम से एक्सेस करना चाहता हूं।संसाधन

यह मैं

File f = new File(ClassLoader.getSystemResource("/blah/blah/Properties.prop").toURI()); 
BufferedReader br = new BufferedReader(new FileReader(f)); 
String line = br.readLine(); 

PrintWriter p = new PrintWriter(new File(ClassLoader.getSystemResource("/blah/blah/Properties.prop").toURI())); 

क्या करना है लेकिन न तो सही लगता है। ऐसा करने का सही तरीका क्या है?

उत्तर

19

नीचे का प्रयास करें:

 InputStreamReader isReader= 
         new InputStreamReader(
          this.getClass().getResourceAsStream(templateName)); 
     BufferedReader br = new BufferedReader(isReader);  

या

 InputStreamReader isReader= 
         new InputStreamReader(
          <youclassName>.class.getResourceAsStream(templateName)); 
     BufferedReader br = new BufferedReader(isReader); 

उत्पादन के लिए, नीचे की कोशिश:

 PrintWriter writer = 
       new PrintWriter(
        new File(this.getClass().getResource(templateName).getPath()); 
+0

धन्यवाद! PrintWriter – CodeGuy

+0

का उपयोग करके आउटपुट के बारे में क्या काम करना चाहिए, लेकिन एक ही समय में एक ही फाइल को पढ़ और लिखना न करें। –

+0

क्या आप मुझे कोड दिखा सकते हैं। मुझे प्रिंटवाइटर काम नहीं कर रहा है – CodeGuy

0

अधिक बस,

try (BufferedReader bufferedReader = Files.newBufferedReader(Paths.get(Resources.getResource("path").toURI()))) { 
     //bufferedReader... 
    } 
    try (BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get(Resources.getResource("path").toURI()))) { 
     //bufferedWriter... 
    } 

ध्यान दें कि पथ संसाधन फ़ोल्डर से संबंधित है।

+0

यह समाधान काम पर प्रकट नहीं होता है जब संसाधन एक जार फ़ाइल के भीतर एम्बेडेड होता है। मेरे मामले में संसाधन का यूआरआई 'jar: file:/c: /PCProxAPI/PCProxAPI.jar! /com/agilysys/rguest/buy/peripherals/PCProxPlusConfig.cfg "' और 'Paths.get (...) का मूल्यांकन करता है 'java.nio.file.FileSystemNotFoundException ' – HairOfTheDog

+1

किसी और के लिए जो सोच रहा है कि' संसाधन 'वर्ग वास्तव में' com.google.common.io.Resources' – HairOfTheDog

+0

@HairOfTheDog, "पथ" उपयोगिता केवल फ़ाइल को "जानता है" प्रणाली। एक बार जब जार में फ़ाइल पैक की जाती है, तो यह अब फ़ाइल सिस्टम प्रतिमान नहीं है। – chaiyachaiya

1

उपर्युक्त सभी समाधान दिखाते हैं कि आप फ़ोल्डर में अपने संसाधनों तक पहुंच कैसे प्राप्त कर सकते हैं। इसका मतलब है कि संसाधन के साथ निर्देशिका बनाने के लिए स्थानांतरित किए गए हैं। क्लास फ़ाइलें।

./src/main/resources/foo.ext:
आप उन्हें बाद समाप्त कार्यक्रम को बचाने के लिए संसाधनों में कुछ फ़ाइलों को लिखने की ज़रूरत है, तो आप जड़ परियोजना के साथ शुरू पथ का वर्णन करना होगा

यह हल करने की आम तौर पर अनुशंसा नहीं की जाती है लेकिन अन्य मामलों में आवश्यक हो सकती है।

+0

मैं मूल रूप से मूल resouce पथ में swich करने के लिए फ़ोल्डर को लक्षित करने के लिए इंगित करने के बाद एक तरीका है अगर मैं खुद से पूछ रहा था। –