Soru C # Dosya Uzantısını Değiştirme


Birçok dosya türüm var: pdf, tiff, jpeg, bmp. vb. Sorum şu: dosya uzantısını nasıl değiştirebilirim? Bunu denedim:

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

Ne tür bir dosya olursa olsun, belirttiğim format dosya adıyla yazılmalıdır. Ama bu çalışmıyor. Tarayıcıdan dosya yolu alıyorum c:\..\..\a.jpgve dosya formatı a.jpeg. Yani, onu silmeye çalıştığımda, bana bir hata veriyor: Cannot find the file on specified path'. Yani, ben eşleşmeyen dosya uzantısı ile ilgili bir şey olduğunu düşünüyorum. Yani, dönüştürmeye çalışıyorum .jpg için .jpeg ve dosyayı silin.


76
2018-03-10 13:01


Menşei


Nasıl çalışır (derleme olmaktan uzak olmak dışında)? - Albin Sunnanbo


Cevaplar:


Var: Path.ChangeExtension yöntem. Örneğin.:

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

Durumda, uzantıyı fiziksel olarak değiştirmek isterseniz, kullanabilirsiniz File.Move yöntem:

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

165
2018-03-10 13:03



uzantısı jpg olarak değişecek mi? orijinal dosya? - safi
@safi: File.Move olacak - güncellenmiş cevabımı görün - Alex
@Alex Bir dosya taşımadım, broswer'dan c: \ .. \ .. \ a.jpg gibi bir dosya yolu alıyorum ve fiziksel yoldaki dosya formatı bir .Jpeg, yani silmeye çalıştığımda, bana hata verir dosyayı belirtilen yolda bulamıyor. Bu yüzden dosya uzantısı ile eşleşmiyor olduğunu düşünüyorum. Bu yüzden jpg'ye jpg'yi dönüştürmeye ve dosyayı silmeye çalışıyorum. - safi
@safi: Dosya uzantısını değiştirdiğinden şüphe duyuyorum. Büyük harf, diskteki bir dosyayı bulur. Dosyanın olduğuna emin misin c:\..\..\a.jpg (örneğinizde) gerçekten var mı? Evet ise, bu dosyayı silmek için yeterli yetkiniz yok mu? Son olarak, sadece dosya uzantısı kullanımını değiştirmek istiyorsanız var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; newFilePath değiştirilen uzantıyla yeni bir dosya adı içerecektir, fiziksel olarak dosya adı (diskte) değiştirilmeyecektir. - Alex
Kod oluşturduğumuz çok şey var, ancak .NET fx'de zaten var. File.Move & Path.ChangeExtension. Güzel ! :-) - Legends


Yeniden adlandırmak için dosyanın bir hareketini yapmalısınız. Örnek kodunuzda sadece dizeyi değiştiriyorsunuz, dosyayı değil:

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

sadece dosyamı değiştiriyorsun (bir dizedir). Gerçek dosyayı taşımak için yapmalısınız

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

Görmek FileInfo.MoveTo


15
2018-03-10 13:03



bir silme yapıyorum bir hareket değil ... - safi
Bir dosya taşımadım, broswer'dan c: \ .. \ .. \ a.jpg gibi bir dosya yolu alıyorum ve fiziksel yoldaki dosya formatı a.Jpeg, yani silmeye çalıştığımda bana hata belirtilen yoldaki dosyayı bulamıyor. Bu yüzden dosya uzantısı ile eşleşmiyor olduğunu düşünüyorum. bu yüzden jpg'ye jpg'yi dönüştürmeye çalışıyorum ve dosyayı sildim - safi


bunu dene.

filename = Path.ChangeExtension(".blah") 

Senin durumunda

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

Bu yazıya da bakmalısın:

http://msdn.microsoft.com/en-us/library/system.io.path.changeextension.aspx


8
2018-03-10 13:04





GetFileNameWithoutExtension, adından da anlaşılacağı gibi, dosyadaki uzantıyı döndürmez. Senin durumunda, sadece "a" dönecekti. Bu sonuca ".Jpeg" değerini eklemek istersiniz. Bununla birlikte, farklı bir düzeyde, görüntü dosyaları farklı meta veriler içerdiğinden ve bu şekilde kolayca dönüştürülemeyeceğinden, bu garip görünüyor.


4
2018-03-10 13:05



Dosyayı dönüştürmek için +1, sadece uzantıyı değiştirmekle kalmaz. - Tester101


Dosya formatını png'ye dönüştür

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*/

0
2017-08-04 09:51