Pytanie Zmień rozszerzenie pliku przy użyciu C #


Mam wiele typów plików: pdf, tiff, jpeg, bmp. itp. Moje pytanie brzmi: jak mogę zmienić rozszerzenie pliku? Próbowałem tego:

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

Bez względu na to, jaki plik jest, podany format musi być zgodny z nazwą pliku. Ale to nie działa. Dostaję ścieżkę do pliku z przeglądarki jak c:\..\..\a.jpg, a format pliku to a.jpeg. Tak więc, gdy próbuję go usunąć, powoduje to błąd: Cannot find the file on specified path'. Myślę więc, że ma to coś wspólnego z rozszerzeniem pliku, które się nie zgadza. Próbuję się nawrócić .jpg do .jpeg i następnie skasuj plik.


76
2018-03-10 13:01


pochodzenie


Jak to nie działa (oprócz bycia daleko od kompilacji)? - Albin Sunnanbo


Odpowiedzi:


Jest: Path.ChangeExtension metoda. Na przykład.:

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

W przypadku, gdy chcesz fizycznie zmienić rozszerzenie, możesz użyć File.Move metoda:

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

165
2018-03-10 13:03



więc zmieni to rozszerzenie na jpg? oryginalnego pliku? - safi
@safi: File.Move will - zobacz moją zaktualizowaną odpowiedź - Alex
@Alex Nie przenoszę pliku, otrzymuję ścieżkę do pliku od broswer jak c: \ .. \ .. \ a.jpg, a format pliku na ścieżce fizycznej to a.Jpeg, więc gdy próbuję go usunąć, daje mi błąd, nie może znaleźć pliku na określonej ścieżce. więc myślę, że ma to coś wspólnego z rozszerzeniem pliku, które nie pasuje. więc próbuję przekonwertować jpg do JPEG i skasować plik następnie. - safi
@safi: Wątpię, że zmiana rozszerzenia pliku na np. wielkie litery zlokalizują plik na dysku. Jesteś pewien, że plik c:\..\..\a.jpg (w twoim przykładzie) naprawdę istnieje? Jeśli tak, może nie masz wystarczających uprawnień, aby usunąć ten plik? I na koniec, jeśli chcesz tylko zastąpić użycie rozszerzenia pliku var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; newFilePath będzie zawierał nową nazwę pliku ze zmienionym rozszerzeniem, fizycznie nazwa pliku (na dysku) nie zostanie zmieniona. - Alex
Jest tak wiele rzeczy, dla których tworzymy kod, ale już istnieje w .NET fx. File.Move & Path.ChangeExtension. Chłodny ! :-) - Legends


Powinieneś wykonać ruch pliku, aby zmienić jego nazwę. W przykładowym kodzie zmieniasz tylko ciąg, a nie plik:

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

zmieniasz tylko mój plik (który jest ciągiem znaków). Aby przenieść rzeczywisty plik, powinieneś zrobić

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

Widzieć FileInfo.MoveTo


15
2018-03-10 13:03



robię usuwanie, a nie ruch ... - safi
Nie przenoszę pliku, otrzymuję ścieżkę do pliku od broswer jak c: \ .. \ .. \ a.jpg, a format pliku na fizycznej ścieżce to a.Jpeg, więc kiedy próbuję go usunąć, daje mi błąd nie może znaleźć pliku w określonej ścieżce. więc myślę, że ma to coś wspólnego z rozszerzeniem pliku, które nie pasuje. więc próbuję przekonwertować jpg do JPEG i skasować plik następnie - safi


Spróbuj tego.

filename = Path.ChangeExtension(".blah") 

w tobie:

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

Powinieneś również zajrzeć do tego posta:

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


8
2018-03-10 13:04





GetFileNameWithoutExtension, jak sama nazwa wskazuje, nie zwraca rozszerzenia do pliku. W twoim przypadku zwróciłoby tylko "a". Do tego wyniku chcesz dołączyć ".Jpeg". Jednak na innym poziomie wydaje się to dziwne, ponieważ pliki obrazów mają różne metadane i nie można ich tak łatwo przekonwertować.


4
2018-03-10 13:05



+1 za konwersję pliku, a nie tylko zmianę rozszerzenia. - Tester101


Konwertuj format pliku na 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