Ubah Ekstensi File Menggunakan C #


98

Saya memiliki banyak jenis file: pdf, tiff, jpeg, bmp. dll. Pertanyaan saya adalah bagaimana cara mengubah ekstensi file? Saya mencoba ini:

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

Apa pun jenis filenya, format yang saya tentukan harus dengan nama file. Tapi itu tidak berhasil. Saya mendapatkan jalur file dari browser like c:\..\..\a.jpg, dan format file adalah a.jpeg. Jadi, ketika saya mencoba untuk menghapusnya, itu memberi saya sebuah kesalahan: Cannot find the file on specified path'. Jadi, saya pikir itu ada hubungannya dengan ekstensi file yang tidak cocok. Jadi, saya mencoba untuk mengkonversi .jpgke .jpegdan menghapus file kemudian.


Bagaimana tidak, (selain jauh dari kompilasi)?
Albin Sunnanbo

Jawaban:


219

Ada: Path.ChangeExtensionmetode. Misalnya:

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

Jika Anda juga ingin mengubah ekstensi secara fisik, Anda dapat menggunakan File.Movemetode:

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

jadi apakah itu akan mengubah ekstensi menjadi jpg? dari file asli?
safi

@Alex Saya tidak memindahkan file, saya mendapatkan jalur file dari broswer seperti c: \ .. \ .. \ a.jpg, dan format file pada jalur fisik adalah a.Jpeg, jadi ketika saya mencoba untuk menghapusnya, itu memberi saya kesalahan tidak dapat menemukan file di jalur yang ditentukan. jadi saya pikir itu ada hubungannya dengan ekstensi file yang tidak cocok. jadi saya mencoba mengonversi jpg ke Jpeg dan menghapus file itu.
safi

3
@ safi: Saya ragu bahwa mengubah ekstensi file ke misalnya huruf besar akan menemukan file di disk. Apakah Anda yakin file c:\..\..\a.jpg(dalam contoh Anda) benar-benar ada? Jika ya, mungkin Anda tidak memiliki cukup hak untuk menghapus file ini? Dan terakhir, jika Anda hanya ingin mengganti gunakan ekstensi file var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; yang newFilePathakan berisi nama file baru dengan ekstensi berubah, fisik, nama file (pada disk) tidak akan berubah.
Alex

1
@safi: lihat, ini var newPath = Path.ChangeExtension("c:/my documents/my images/cars/a where a is a.jpg", string.Empty)akan menghapus ekstensi dari jalur yang didefinisikan sebagai parameter metode pertama; yang newPathvariabel string akan berisi c:/my documents/my images/cars/a where a is a.nilai setelah operasi ini.
Alex

1
Ada begitu banyak hal yang kami lakukan untuk membuat kode, tetapi sudah ada di .NET fx. File.Move& Path.ChangeExtension. Keren ! :-)
Legenda

17

Anda harus melakukan pemindahan file untuk mengganti namanya. Dalam kode contoh Anda, Anda hanya mengubah string, bukan file:

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

Anda hanya mengubah myfile (yang merupakan string). Untuk memindahkan file sebenarnya, Anda harus melakukannya

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

Lihat FileInfo.MoveTo


Saya tidak memindahkan file, saya mendapatkan jalur file dari broswer seperti c: \ .. \ .. \ a.jpg, dan format file pada jalur fisik adalah a.Jpeg, jadi ketika saya mencoba untuk menghapusnya, saya mendapatkan kesalahan tidak dapat menemukan file di jalur yang ditentukan. jadi saya pikir itu ada hubungannya dengan ekstensi file yang tidak cocok. jadi saya mencoba untuk mengkonversi jpg ke Jpeg dan menghapus file tersebut
safi

Kode pertama tidak melakukan penggantian apa pun. Anda perlu melakukanmyfile=myfile.Replace(extension,".Jpeg");
KansaiRobot


4

Metode GetFileNameWithoutExtension, seperti namanya, tidak mengembalikan ekstensi pada file. Dalam kasus Anda, itu hanya akan mengembalikan "a". Anda ingin menambahkan ".Jpeg" Anda ke hasil itu. Namun, pada level yang berbeda, ini tampak aneh, karena file gambar memiliki metadata yang berbeda dan tidak dapat diubah dengan mudah.


0

Ubah format file menjadi 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*/
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.