Ändern Sie die Dateierweiterung mit C #


98

Ich habe viele Dateitypen: pdf, tiff, jpeg, bmp. usw. Meine Frage ist, wie ich die Dateierweiterung ändern kann. Ich habe es versucht:

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

Unabhängig davon, um welchen Dateityp es sich handelt, muss das von mir angegebene Format mit dem Dateinamen übereinstimmen. Aber es funktioniert nicht. Ich bekomme Dateipfad vom Browser wie c:\..\..\a.jpgund das Dateiformat ist a.jpeg. Wenn ich versuche, es zu löschen, wird mir ein Fehler angezeigt : Cannot find the file on specified path'. Ich denke also, dass es etwas mit der Dateierweiterung zu tun hat, die nicht übereinstimmt. Also, ich versuche zu konvertieren , .jpgum .jpegdie Datei dann zu löschen.


Wie funktioniert es nicht (abgesehen davon, dass es weit vom Kompilieren entfernt ist)?
Albin Sunnanbo

Antworten:


218

Es gibt: Path.ChangeExtensionMethode. Z.B:

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

Wenn Sie die Erweiterung auch physisch ändern möchten, können Sie folgende File.MoveMethode verwenden:

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

Wird es also die Erweiterung in jpg ändern? der Originaldatei?
Safi

@Alex Ich verschiebe keine Datei, ich erhalte einen Dateipfad von broswer wie c: \ .. \ .. \ a.jpg, und das Dateiformat auf dem physischen Pfad ist a.Jpeg. Wenn ich also versuche, sie zu löschen, ist es gibt mir Fehler kann die Datei auf angegebenem Pfad nicht finden. Ich denke also, es hat etwas damit zu tun, dass die Dateierweiterung nicht übereinstimmt. Also versuche ich, JPG in JPEG zu konvertieren und die Datei dann zu löschen.
Safi

3
@safi: Ich bezweifle, dass durch Ändern der Dateierweiterung in z. B. Großbuchstaben eine Datei auf der Festplatte gefunden wird. Sind Sie sicher, dass die Datei c:\..\..\a.jpg(in Ihrem Beispiel) wirklich vorhanden ist? Wenn ja, haben Sie möglicherweise nicht genügend Berechtigungen, um diese Datei zu löschen? Und schließlich, wenn Sie nur die Dateierweiterung ersetzen möchten, verwenden Sie var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; Der newFilePathenthält einen neuen Dateinamen mit geänderter Erweiterung. Der Dateiname (auf der Festplatte) wird physisch nicht geändert.
Alex

1
@safi: siehe, dies var newPath = Path.ChangeExtension("c:/my documents/my images/cars/a where a is a.jpg", string.Empty)entfernt die Erweiterung aus dem Pfad, der als erster Methodenparameter definiert ist; Die newPathZeichenfolgenvariable enthält c:/my documents/my images/cars/a where a is a.nach dieser Operation einen Wert.
Alex

1
Es gibt so viele Dinge, für die wir Code erstellen, die aber bereits in .NET fx vorhanden sind. File.Move& Path.ChangeExtension. Cool ! :-)
Legends

17

Sie sollten die Datei verschieben, um sie umzubenennen. In Ihrem Beispielcode ändern Sie nur die Zeichenfolge, nicht die Datei:

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

Sie ändern nur myfile (das ist eine Zeichenfolge). Um die eigentliche Datei zu verschieben, sollten Sie dies tun

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

Siehe FileInfo.MoveTo


Ich verschiebe keine Datei, ich erhalte einen Dateipfad von broswer wie c: \ .. \ .. \ a.jpg, und das Dateiformat auf dem physischen Pfad ist a.Jpeg. Wenn ich also versuche, es zu löschen, gibt es mir Fehler kann die Datei im angegebenen Pfad nicht finden. Ich denke also, es hat etwas damit zu tun, dass die Dateierweiterung nicht übereinstimmt.
Also

Der erste Code ersetzt nicht. Sie müssen tunmyfile=myfile.Replace(extension,".Jpeg");
KansaiRobot


4

Die Methode gibt GetFileNameWithoutExtension, wie der Name schon sagt, die Erweiterung der Datei nicht zurück. In Ihrem Fall würde nur "a" zurückgegeben. Sie möchten Ihr ".Jpeg" an dieses Ergebnis anhängen. Auf einer anderen Ebene erscheint dies jedoch seltsam, da Bilddateien unterschiedliche Metadaten haben und nicht so einfach konvertiert werden können.


0

Konvertieren Sie das Dateiformat in 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*/
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.