Zmień rozszerzenie pliku za pomocą C #


98

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 typ pliku, określony przeze mnie format musi być zgodny z nazwą pliku. Ale to nie działa. Otrzymuję ścieżkę do pliku z przeglądarki c:\..\..\a.jpg, a format pliku to a.jpeg. Tak więc, gdy próbuję go usunąć, to daje mi błąd: Cannot find the file on specified path'. Więc myślę, że ma to coś wspólnego z rozszerzeniem pliku, które nie pasuje. Więc próbuję przekonwertować .jpgdo .jpegi następnie usunąć plik.


Jak to nie działa (poza tym, że jest daleko od kompilacji)?
Albin Sunnanbo

Odpowiedzi:


220

Jest: Path.ChangeExtensionmetoda. Na przykład:

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

W przypadku, gdy chcesz również fizycznie zmienić rozszerzenie, możesz użyć File.Movemetody:

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

więc czy zmieni rozszerzenie na jpg? oryginalnego pliku?
safi,

@Alex Nie przenoszę pliku, otrzymuję ścieżkę do pliku z przeglądarki, na przykład 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żna znaleźć pliku w określonej ścieżce. więc myślę, że ma to związek z tym, że rozszerzenie pliku nie pasuje. więc próbuję przekonwertować JPG do JPEG i usunąć plik.
safi,

3
@safi: Wątpię, żeby zmiana rozszerzenia pliku na np. wielkie litery zlokalizowała plik na dysku. Czy na pewno plik c:\..\..\a.jpg(w Twoim przykładzie) istnieje naprawdę? Jeśli tak, może nie masz wystarczających uprawnień, aby usunąć ten plik? I wreszcie, jeśli chcesz po prostu zastąpić rozszerzenie pliku var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; newFilePathbędzie zawierać nową nazwę pliku z rozszerzeniem zmienił fizycznie, nazwa pliku (na dysku) nie zostanie zmieniony.
Alex

1
@safi: zobacz, var newPath = Path.ChangeExtension("c:/my documents/my images/cars/a where a is a.jpg", string.Empty)spowoduje to usunięcie rozszerzenia ze ścieżki zdefiniowanej jako pierwszy parametr metody; newPathzmienna ciąg będzie zawierać c:/my documents/my images/cars/a where a is a.wartość po tej operacji.
Alex

1
Jest tak wiele rzeczy, dla których tworzymy kod, ale już istnieją w .NET fx. File.Move& Path.ChangeExtension. Chłodny ! :-)
Legends

17

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ś to zrobić

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

Zobacz FileInfo.MoveTo


Nie przenoszę pliku, otrzymuję ścieżkę do pliku z przeglądarki, na przykład c: \ .. \ .. \ a.jpg, a format pliku na ścieżce fizycznej 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 związek z tym, że rozszerzenie pliku nie pasuje. więc próbuję przekonwertować jpg do JPEG i usunąć plik, a następnie
safi

Pierwszy kod nie zastępuje. Musisz to zrobićmyfile=myfile.Replace(extension,".Jpeg");
KansaiRobot


4

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


0

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*/
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.