2012-07-22 20 views
6

के बिना फ़ाइल एक्सटेंशन प्राप्त कर रहा है मैं उस मूर्खतापूर्ण lastIndexOf('.') आदि का उपयोग किए बिना जावा में फ़ाइल एक्सटेंशन कैसे प्राप्त करूं?जावा

+0

के संभावित डुप्लिकेट के साथ [मैं जावा में एक स्ट्रिंग से एक फाइल एक्सटेंशन कैसे ट्रिम करते हैं?] (http://stackoverflow.com/questions/ 941272/कैसे-करें-i-trim-a-file-extension-from-a-string-in-java) – pb2q

+0

संभव नहीं है। अंतिम समाधान का उपयोग कर रहे किसी भी समाधान का उपयोग कर रहे हैं – Yoda

+1

'आखिरीindexof' क्यों नहीं है जो आप चाहते हैं या आपके लिए काम नहीं कर रहे हैं, यह एक छोटी सी पृष्ठभूमि है - निश्चित रूप से मुझे पता है कि इस दृष्टिकोण में भी समस्याएं हैं, लेकिन थोड़ी समझ है कि आप क्यों हैं एक और दृष्टिकोण की तलाश में मदद कर सकते हैं। – MadProgrammer

उत्तर

15

अपाचे कॉमन्स लाइब्रेरी में FilenameUtils.getExtension() है।

आप here, और FilenameUtils से शुरू होने वाले स्रोत को देख सकते हैं।

कम से कम उनके कार्यान्वयन को देखें। यह बहुत सरल है, वे dir.ext/फ़ाइल सही ढंग से संभाल, और file.tar.gz की तरह कुछ संभाल करने के लिए किसी विशेष परिस्थिति की आवश्यकता होगी अगर आप .tar.gz बजाय सिर्फ निकालने के लिए चाहते हैं। gz

+3

मैंने व्याख्या की थी कि वह फ़ाइल एक्सटेंशन स्वयं ही चाहता था, विस्तार के बिना नाम नहीं। इसके लिए अभी भी एक विधि है ('getExtension'), लेकिन यह पढ़ें कि यह क्या करता है: *" अंतिम बिंदु के बाद फ़ाइल नाम का पाठ भाग देता है। "* यही वही है जो वह पहले से कर रहा है; केवल एक ही कार्यक्षमता के लिए पूरी लाइब्रेरी/निर्भरता जोड़ने में कोई बात नहीं है (जब तक कि वह पहले से ही अपाचे कॉमन्स का उपयोग नहीं कर रहा हो)। –

+0

@ जोनाथन न्यूम्यूस धन्यवाद, आप सही हैं। – pb2q

+0

@ जोनाथन न्यूम्यूज सही है, मेरे विधि मिश्रण के बारे में सही है। मेरा मानना ​​है कि 'getExtension' का कार्यान्वयन थोड़ा और अधिक गहन है जो कि' lastIndexOf' को लपेटता है, जिसके कारण आपके स्वयं के उत्तर पते, और उदा। _dir.ext/file_। – pb2q

2

यह शायद सबसे आसान तरीका है (यह भी ध्यान दें कि संदर्भ के आधार पर, यह जरूरी नहीं है, उदाहरण के लिए ".tar.gz")।

आप 10 पर आधारित split स्ट्रिंग भी कर सकते हैं और अंतिम टुकड़ा ले सकते हैं, लेकिन यह उतना ही मुश्किल लगता है।

क्या कोई विशेष कारण क्यों आप substring और lastIndexOf से बचने की कोशिश कर रहे हैं?

1

बाहरी पुस्तकालयों को शामिल नहीं करना चाहते हैं? नियमित अभिव्यक्ति का उपयोग करें:

String extension = filename.replaceAll("^.*\\.([^.]+)$", "$1"); 
0

guava

Files.getFileExtension("some.txt")

+1

का उपयोग किया मुझे डर है कि [jdk8] (http://docs.oracle.com/javase/8/docs/ में ऐसी कोई विधि नहीं है एपीआई/जावा/एनओओ/फाइल/Files.html), मुझे लगता है कि आपका मतलब है Google का [guava] (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/Files। एचटीएमएल # getFileExtension% 28java.lang.String% 29) – A4L

+0

@ ए 4 एल इस बात को इंगित करने के लिए धन्यवाद, मुझे इस कक्षा के java.lang पैकेज द्वारा भ्रमित हो गया ☺ – Entea