Cambiar la extensión de archivo usando C #


98

Tengo muchos tipos de archivos: pdf, tiff, jpeg, bmp. etc. Mi pregunta es ¿cómo puedo cambiar la extensión del archivo? Probé esto:

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

No importa qué tipo de archivo sea, el formato que especifique debe ser con el nombre del archivo. Pero no funciona. Obtengo la ruta del archivo del navegador como c:\..\..\a.jpg, y el formato del archivo es a.jpeg. Así, cuando trato de borrarlo, me da un error: Cannot find the file on specified path'. Entonces, creo que tiene algo que ver con la extensión del archivo que no coincide. Por lo tanto, estoy tratando de convertir .jpga .jpegy borrar el archivo a continuación.


¿Cómo no funciona (además de estar lejos de compilar)?
Albin Sunnanbo

Respuestas:


219

Hay: Path.ChangeExtensionmétodo. P.ej:

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

En el caso de que también desee cambiar físicamente la extensión, puede usar el File.Movemétodo:

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

entonces, ¿cambiará la extensión a jpg? del archivo original?
safi

@Alex No estoy moviendo un archivo, obtengo la ruta del archivo de broswer como c: \ .. \ .. \ a.jpg, y el formato de archivo en la ruta física es a.Jpeg, así que cuando intento eliminarlo, me da un error no puedo encontrar el archivo en la ruta especificada. así que estoy pensando que tiene algo que ver con la extensión del archivo que no coincide. así que estoy tratando de convertir jpg a Jpeg y luego eliminar el archivo.
safi

3
@safi: Dudo que cambiar la extensión del archivo, por ejemplo, a mayúsculas, ubique un archivo en el disco. ¿Está seguro de que el archivo c:\..\..\a.jpg(en su ejemplo) existe realmente? En caso afirmativo, ¿quizás no tiene suficientes privilegios para eliminar este archivo? Y finalmente, si solo desea reemplazar la extensión de archivo, use var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; el newFilePathcontendrán un nuevo nombre de archivo con extensión cambiado, físicamente, no se cambiará el nombre del archivo (en el disco).
Alex

1
@safi: mira, esto var newPath = Path.ChangeExtension("c:/my documents/my images/cars/a where a is a.jpg", string.Empty)eliminará la extensión de la ruta definida como el primer parámetro del método; la newPathvariable de cadena contendrá c:/my documents/my images/cars/a where a is a.valor después de esta operación.
Alex

1
Hay tantas cosas para las que creamos código, pero ya existen en .NET fx. File.Move& Path.ChangeExtension. Frio ! :-)
Leyendas

17

Debe mover el archivo para cambiarle el nombre. En su código de ejemplo, solo está cambiando la cadena, no el archivo:

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

solo está cambiando myfile (que es una cadena). Para mover el archivo real, debe hacer

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

Ver FileInfo.MoveTo


No estoy moviendo un archivo, obtengo la ruta del archivo de broswer como c: \ .. \ .. \ a.jpg, y el formato del archivo en la ruta física es a.Jpeg, así que cuando intento eliminarlo, me da error no puede encontrar el archivo en la ruta especificada. así que estoy pensando que tiene algo que ver con la extensión del archivo que no coincide. así que estoy tratando de convertir jpg a Jpeg y eliminar el archivo entonces
safi

El primer código no reemplaza. Tienes que hacerlomyfile=myfile.Replace(extension,".Jpeg");
KansaiRobot


4

El método GetFileNameWithoutExtension, como su nombre lo indica, no devuelve la extensión en el archivo. En su caso, solo devolvería "a". Desea agregar su ".Jpeg" a ese resultado. Sin embargo, a un nivel diferente, esto parece extraño, ya que los archivos de imagen tienen metadatos diferentes y no se pueden convertir tan fácilmente.


0

Convertir formato de archivo a 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*/
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.