C # का उपयोग करके फ़ाइल एक्सटेंशन बदलें


98

मेरे पास कई फ़ाइल प्रकार हैं: pdf, tiff, jpeg, bmp। आदि मेरा सवाल है कि मैं फ़ाइल एक्सटेंशन कैसे बदल सकता हूं? मैंने यह कोशिश की:

my file= c:/my documents/my images/cars/a.jpg;
string extension = Path.GetExtension(myffile);
myfile.replace(extension,".Jpeg");

कोई फर्क नहीं पड़ता कि यह किस प्रकार की फ़ाइल है, मेरे द्वारा निर्दिष्ट प्रारूप फ़ाइल नाम के साथ होना चाहिए। लेकिन यह काम नहीं करता है। मुझे ब्राउज़र से फ़ाइल पथ मिलता है c:\..\..\a.jpg, और फ़ाइल स्वरूप है a.jpeg। इसलिए, जब मैं इसे हटाने की कोशिश करता हूं, तो यह मुझे एक त्रुटि देता है Cannot find the file on specified path':। इसलिए, मैं सोच रहा हूं कि इसका फाइल एक्सटेंशन के साथ कुछ ऐसा है जो मेल नहीं खाता है। इसलिए, मैं तब फ़ाइल को रूपांतरित .jpgकरने .jpegऔर हटाने का प्रयास कर रहा हूं ।


यह कैसे काम नहीं करता है, (संकलन से बहुत दूर होने के अलावा)?
एल्बिन सुन्नान्बो

जवाबों:


220

वहाँ है: Path.ChangeExtensionविधि। उदाहरण के लिए:

var result = Path.ChangeExtension(myffile, ".jpg");

यदि आप भौतिक रूप से एक्सटेंशन बदलना चाहते हैं, तो आप File.Moveविधि का उपयोग कर सकते हैं :

File.Move(myffile, Path.ChangeExtension(myffile, ".jpg"));

तो यह jpg के विस्तार को बदल देगा? मूल फ़ाइल का?
सफारी

@ मैं कोई फ़ाइल नहीं ले जा रहा हूँ, मुझे broswer से c: \ .. \ .. \ a.jpg जैसे फ़ाइल पथ मिलते हैं, और भौतिक पथ पर फ़ाइल स्वरूप a .Jpeg है, इसलिए जब मैं इसे हटाने का प्रयास करता हूं, तो मुझे त्रुटि देता है निर्दिष्ट पथ पर फ़ाइल नहीं मिल रही है। इसलिए मैं सोच रहा हूं कि फाइल एक्सटेंशन के साथ कुछ मेल नहीं खा रहा है। इसलिए मैं jpg को जेपीईजी में बदलने और फ़ाइल को हटाने की कोशिश कर रहा हूं।
सफारी

3
@ साफी: मुझे संदेह है कि फ़ाइल एक्सटेंशन को उदा। अपरकेस पर बदलना डिस्क पर एक फ़ाइल का पता लगाएगा। क्या आप सुनिश्चित हैं कि फ़ाइल c:\..\..\a.jpg(आपके उदाहरण में) वास्तव में मौजूद है? यदि हाँ, तो शायद आपके पास इस फ़ाइल को हटाने के लिए पर्याप्त निजीकृत नहीं हैं? और अंत में, यदि आप फ़ाइल एक्सटेंशन उपयोग को बदलना चाहते हैं var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; में newFilePathपरिवर्तित एक्सटेंशन के साथ एक नया फ़ाइल नाम होगा, भौतिक रूप से, फ़ाइल नाम (डिस्क पर) बदला नहीं जाएगा।
एलेक्स

1
@ साफी: देखें, यह var newPath = Path.ChangeExtension("c:/my documents/my images/cars/a where a is a.jpg", string.Empty)पहले विधि पैरामीटर के रूप में परिभाषित पथ से विस्तार को हटा देगा; newPathस्ट्रिंग चर में शामिल होंगे c:/my documents/my images/cars/a where a is a.इस ऑपरेशन के बाद मूल्य।
एलेक्स

1
ऐसी बहुत सी चीजें हैं जिनके लिए हम कोड बनाते हैं, लेकिन पहले से मौजूद हैं। .NET fx। File.Moveऔर Path.ChangeExtension। ठंडा ! :-)
महापुरूष

17

आपको इसका नाम बदलने के लिए फ़ाइल का एक मूव करना चाहिए। आपके उदाहरण कोड में आप केवल स्ट्रिंग बदल रहे हैं, न कि फ़ाइल:

myfile= "c:/my documents/my images/cars/a.jpg";
string extension = Path.GetExtension(myffile); 
myfile.replace(extension,".Jpeg");

आप केवल myfile (जो एक स्ट्रिंग है) बदल रहे हैं। वास्तविक फ़ाइल को स्थानांतरित करने के लिए, आपको करना चाहिए

FileInfo f = new FileInfo(myfile);
f.MoveTo(Path.ChangeExtension(myfile, ".Jpeg"));

FileInfo.MoveTo देखें


मैं एक फ़ाइल नहीं ले जा रहा हूँ, मुझे broswer से फ़ाइल पथ मिल रहा है जैसे c: \ .. \ .. \ a.jpg, और भौतिक पथ पर फ़ाइल स्वरूप a .Jpeg है, इसलिए जब मैं इसे हटाने की कोशिश करता हूं, तो यह मुझे देता है त्रुटि फ़ाइल को निर्दिष्ट पथ पर नहीं मिल सकती है। इसलिए मैं सोच रहा हूं कि फाइल एक्सटेंशन के साथ कुछ मेल नहीं खा रहा है। इसलिए मैं jpg को जेपीईजी में बदलने और फ़ाइल को हटाने की कोशिश कर रहा
हूं

पहला कोड कोई रिप्लेसमेंट नहीं करता है। आपको करने की आवश्यकता हैmyfile=myfile.Replace(extension,".Jpeg");
KansaiRobot


4

विधि GetFileNameWithoutExtension, जैसा कि नाम से पता चलता है, फ़ाइल पर एक्सटेंशन वापस नहीं करता है। आपके मामले में, यह केवल "ए" लौटाएगा। आप अपने ".Jpeg" को उस परिणाम में जोड़ना चाहते हैं। हालाँकि, एक अलग स्तर पर, यह अजीब लगता है, क्योंकि छवि फ़ाइलों में अलग मेटाडेटा है और इसे इतनी आसानी से परिवर्तित नहीं किया जा सकता है।


0

फ़ाइल स्वरूप को png में बदलें

string newfilename , 
 string filename = "~/Photo/"  + lbl_ImgPath.Text.ToString();/*get filename from specific path where we store image*/
 string newfilename = Path.ChangeExtension(filename, ".png");/*Convert file format from jpg to png*/
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.