यह काम करता है अगर आप दो चरणों में कार्य करें: चयनित फ़ाइल एक्सटेंशन जोड़ना है, तो विस्तार इसके परिशिष्ट साथ File
वस्तु बनाने के।
String withExtension = chooser.getSelectedFile().getAbsolutePath() + ".jpg";
File file = new File(withExtension)
अपने प्रश्न में निहित है, लेकिन सिर्फ सभी आधार कवर करने: यदि विस्तार पहले से ही वहाँ पहली बार नहीं है की जांच की जरूरत है, जैसे:
String withExtension = chooser.getSelectedFile().getAbsolutePath();
if(!withExtension.toLowerCase().endsWith(".jpg"))
withExtension += ".jpg";
[आप ".jpeg जोड़ सकते हैं "ऊपर if
पर - यह जेपीईजी फाइलों के लिए एक वैध विस्तार है]
नीचे दिया गया कोड काम कर सकता है या नहीं भी। File
में toString()
है जो इसे संकलित करने की अनुमति देगा, लेकिन मैं उपर्युक्त विधि का उपयोग करना चाहूंगा, जहां मैं सही पथ नाम को नियंत्रित कर सकता हूं। toString()
File
ऑब्जेक्ट के लिए प्रलेखन मेरे लिए बिल्कुल स्पष्ट नहीं है कि यह वास्तव में क्या लौटाता है। इस तरह के मामलों में, मैं एक ऐसा फ़ंक्शन कॉल करना पसंद करता हूं जिसे मैं जानता हूं कि मुझे निश्चित रूप से क्या चाहिए।
File file = new File(chooser.getSelectedFile() + ".jpg");
यह उत्तर यह करेगा। हालांकि एक unneeded स्ट्रिंगबिल्डर निर्माण से बचने के लिए filePath.concat ("। Jpg") करें। – Justin
@ जस्टिन एक नया 'स्ट्रिंगबिल्डर' बनाने का ओवरहेड नगण्य होना चाहिए क्योंकि वह केवल एक बार कार्रवाई कर रहा है। – Jeffrey
धन्यवाद जेफरी :) दुख की बात है कि मैं अभी तक वोट नहीं दे सकता। क्या आपको पता है क्यों \t \t \t \t \t प्रारूप नाम यहां आवश्यक है: ImageIO.write (image, "jpg", file); ऐसा कोई फर्क नहीं पड़ता है? यदि आपके पास फ़ाइल पर प्रारूप होना है तो वैसे भी? – Kingteeb