2012-07-13 10 views
9

के माध्यम से वर्तमान में चल रहे JAR से फ़ाइल निकालने क्या कोई अंतर्निहित विधियां हैं जिनका उपयोग मैं उपयोगकर्ताओं को वर्तमान में चल रहे JAR से फ़ाइल निकालने और अपनी डिस्क पर सहेजने की अनुमति देने के लिए कर सकता हूं?कोड

अग्रिम धन्यवाद।

उत्तर

8

getResourceAsStream (docs) का उपयोग करें, आप इसके बाद जो भी चाहें कर सकते हैं।

दो-लाइनर के लिए आप one of the Commons IO copy methods का उपयोग कर सकते हैं।

+0

getResourceAsStream आप पर किसी भी मिलान संसाधन तक पहुँच प्रदान करेगा क्लास पथ और न केवल "वर्तमान में चल रहे जेएआर" वाली एक फ़ाइल है, यह मानते हुए कि यह एक जावा फ़ाइल है जिसे "जावा -जर " के साथ निष्पादित किया गया है। – jarnbjo

+0

@jarnbjo हाँ। और यदि संसाधन ठीक तरह से पैक नहीं किया गया है, तो यह संभवतः एक मुद्दा है, लेकिन सवाल यह है कि, मुझे लगता है कि यह समस्या * विशेष रूप से * "चलने वाले जार" से आने के लिए, अन्य सभी को छोड़ने के लिए बहुत व्यापक है संसाधनों को ठीक उसी तरह पैक किया गया। –

+0

यह चाल है। धन्यवाद! – Konstantin

0

मुझे यकीन है कि आप जानते हैं कि हो जाएगा कि क्या जो जार से अपने वर्ग निष्पादित हो रही है नहीं कर रहा हूँ, लेकिन आप जार से संसाधनों को निकालने के लिए यह कोशिश कर सकते हैं: How to write a Java program which can extract a JAR file and store its data in specified directory (location)?

16
File file = new File("newname.ext"); 
if (!file.exists()) { 
    InputStream link = (getClass().getResourceAsStream("/path/resources/filename.ext")); 
    Files.copy(link, file.getAbsoluteFile().toPath()); 
} 
+0

ध्यान दें कि कुछ फाइल.copy कार्यान्वयन (java.nio.file.Files) इनपुट स्ट्रीम को बंद नहीं करता है -> संभावित मेमोरी लीक। – Vity