Câu hỏi Thay đổi phần mở rộng tệp bằng C #


Tôi có nhiều loại tệp: pdf, tiff, jpeg, bmp. v.v. Câu hỏi của tôi là làm thế nào tôi có thể thay đổi phần mở rộng tập tin? Tôi đã thử điều này:

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

Bất kể loại tệp là gì, định dạng tôi chỉ định phải có tên tệp. Nhưng nó không hoạt động. Tôi nhận được đường dẫn tệp từ trình duyệt như c:\..\..\a.jpgvà định dạng tệp là a.jpeg. Vì vậy, khi tôi cố gắng xóa nó, nó cho tôi một lỗi: Cannot find the file on specified path'. Vì vậy, tôi nghĩ rằng nó có cái gì để làm với phần mở rộng tập tin mà không phù hợp. Vì vậy, tôi đang cố gắng chuyển đổi .jpg đến .jpeg và xóa tệp rồi.


76
2018-03-10 13:01


gốc


Làm thế nào nó không hoạt động, (ngoài việc không được biên dịch)? - Albin Sunnanbo


Các câu trả lời:


Có: Path.ChangeExtension phương pháp. Ví dụ.:

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

Trong trường hợp nếu bạn cũng muốn thay đổi phần mở rộng về mặt vật lý, bạn có thể sử dụng File.Move phương pháp:

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

165
2018-03-10 13:03



do đó, nó sẽ thay đổi phần mở rộng để jpg? của tệp gốc? - safi
@safi: File.Move sẽ - xem câu trả lời cập nhật của tôi - Alex
@ Alex Tôi không di chuyển một tập tin, tôi nhận được đường dẫn tập tin từ broswer như c: \ .. \ .. \ a.jpg, và định dạng tập tin trên đường dẫn vật lý là a.Jpeg, vì vậy khi tôi cố gắng xóa nó, nó cho tôi lỗi không thể tìm thấy tệp trên đường dẫn được chỉ định. vì vậy tôi nghĩ rằng nó có một số để làm với phần mở rộng tập tin là không phù hợp. vì vậy tôi đang cố gắng để chuyển đổi jpg để Jpeg và xóa các tập tin sau đó. - safi
@safi: Tôi nghi ngờ rằng việc thay đổi phần mở rộng tệp thành ví dụ: chữ hoa sẽ định vị một tập tin trên đĩa. Bạn có chắc chắn tệp không c:\..\..\a.jpg (trong ví dụ của bạn) thực sự tồn tại? Nếu có, có thể bạn không có đủ đặc quyền để xóa tệp này? Và cuối cùng, nếu bạn chỉ muốn thay thế tiện ích mở rộng tệp var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; các newFilePath sẽ chứa tên tệp mới có đuôi mở rộng thay đổi, về mặt vật lý, tên tệp (trên đĩa) sẽ không bị thay đổi. - Alex
Có rất nhiều thứ chúng ta tạo mã cho, nhưng đã tồn tại trong .NET fx. File.Move & Path.ChangeExtension. Mát mẻ ! :-) - Legends


Bạn nên làm một di chuyển của tập tin để đổi tên nó. Trong mã ví dụ của bạn, bạn chỉ thay đổi chuỗi, chứ không phải tệp:

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

bạn chỉ thay đổi myfile (là một chuỗi). Để di chuyển tệp thực, bạn nên làm

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

Xem FileInfo.MoveTo


15
2018-03-10 13:03



tôi đang thực hiện việc xóa không phải là di chuyển ... - safi
Tôi không di chuyển một tập tin, tôi nhận được đường dẫn tập tin từ broswer như c: \ .. \ .. \ a.jpg, và định dạng tập tin trên đường dẫn vật lý là a.Jpeg, vì vậy khi tôi cố gắng xóa nó, nó mang lại cho tôi lỗi không thể tìm thấy tệp trên đường dẫn được chỉ định. vì vậy tôi nghĩ rằng nó có một số để làm với phần mở rộng tập tin là không phù hợp. vì vậy tôi đang cố chuyển đổi jpg thành Jpeg và xóa tệp rồi - safi


thử cái này.

filename = Path.ChangeExtension(".blah") 

trong trường hợp bạn:

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

Bạn cũng nên xem bài đăng này:

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


8
2018-03-10 13:04





GetFileNameWithoutExtension, như tên của nó, không trả về phần mở rộng trên tệp. Trong trường hợp của bạn, nó sẽ chỉ trả về "a". Bạn muốn nối ".Jpeg" của bạn vào kết quả đó. Tuy nhiên, ở một mức độ khác, điều này có vẻ lạ, vì các tệp hình ảnh có siêu dữ liệu khác nhau và không thể chuyển đổi dễ dàng như vậy.


4
2018-03-10 13:05



1 để chuyển đổi tệp, không chỉ thay đổi tiện ích. - Tester101


Chuyển đổi định dạng tệp thành 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*/

0
2017-08-04 09:51