Modifier l'extension de fichier à l'aide de C #


98

J'ai de nombreux types de fichiers: pdf, tiff, jpeg, bmp. etc. Ma question est de savoir comment changer l'extension de fichier? J'ai essayé ceci:

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

Quel que soit le type de fichier, le format que je spécifie doit être avec le nom du fichier. Mais ça ne marche pas. J'obtiens le chemin du fichier du navigateur comme c:\..\..\a.jpg, et le format de fichier est a.jpeg. Alors, lorsque je tente de le supprimer, il me donne une erreur: Cannot find the file on specified path'. Donc, je pense que cela a quelque chose à voir avec l'extension de fichier qui ne correspond pas. Donc, je suis en train de convertir .jpgà .jpeget supprimer le fichier , puis.


Comment ça ne marche pas, (à part être loin d'être compilé)?
Albin Sunnanbo

Réponses:


220

Il y a: Path.ChangeExtensionméthode. Par exemple:

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

Dans le cas où vous souhaitez également modifier physiquement l'extension, vous pouvez utiliser la File.Moveméthode:

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

alors changera-t-il l'extension en jpg? du fichier original?
safi

@Alex Je ne déplace pas de fichier, j'obtiens le chemin du fichier de broswer comme c: \ .. \ .. \ a.jpg, et le format de fichier sur le chemin physique est a.Jpeg, donc quand j'essaye de le supprimer, il me donne une erreur ne peut pas trouver le fichier sur le chemin spécifié. donc je pense que cela a quelque chose à voir avec l'extension de fichier ne correspond pas. donc j'essaye de convertir jpg en Jpeg et de supprimer le fichier alors.
safi

3
@safi: Je doute que changer l'extension de fichier par exemple en majuscules localisera un fichier sur le disque. Êtes-vous sûr que le fichier c:\..\..\a.jpg(dans votre exemple) existe vraiment? Si oui, vous n'avez peut-être pas assez de privilèges pour supprimer ce fichier? Et enfin, si vous souhaitez simplement remplacer l'utilisation de l'extension de fichier var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; le newFilePathcontiendra un nouveau nom de fichier avec l'extension modifiée, physiquement, le nom du fichier (sur le disque) ne sera pas changé.
Alex

1
@safi: voyez, cela var newPath = Path.ChangeExtension("c:/my documents/my images/cars/a where a is a.jpg", string.Empty)supprimera l'extension du chemin défini comme premier paramètre de méthode; la newPathvariable chaîne contiendra une c:/my documents/my images/cars/a where a is a.valeur après cette opération.
Alex

1
Il y a tellement de choses pour lesquelles nous créons du code, mais qui existe déjà dans le .NET fx. File.Move& Path.ChangeExtension. Cool ! :-)
Legends

17

Vous devez déplacer le fichier pour le renommer. Dans votre exemple de code, vous ne modifiez que la chaîne, pas le fichier:

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

vous modifiez uniquement myfile (qui est une chaîne). Pour déplacer le fichier réel, vous devez faire

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

Voir FileInfo.MoveTo


Je ne déplace pas un fichier, j'obtiens le chemin du fichier de broswer comme c: \ .. \ .. \ a.jpg, et le format de fichier sur le chemin physique est a.Jpeg, donc quand j'essaye de le supprimer, cela me donne erreur ne peut pas trouver le fichier sur le chemin spécifié. donc je pense que cela a quelque chose à voir avec l'extension de fichier ne correspond pas. donc j'essaye de convertir jpg en Jpeg et de supprimer le fichier alors
safi

Le premier code ne fait aucun remplacement. Vous devez fairemyfile=myfile.Replace(extension,".Jpeg");
KansaiRobot


4

La méthode GetFileNameWithoutExtension, comme son nom l'indique, ne renvoie pas l'extension sur le fichier. Dans votre cas, il ne renverrait que "a". Vous souhaitez ajouter votre ".Jpeg" à ce résultat. Cependant, à un niveau différent, cela semble étrange, car les fichiers image ont des métadonnées différentes et ne peuvent pas être convertis aussi facilement.


0

Convertir le format de fichier en 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*/
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.