Modificare l'estensione del file utilizzando C #


98

Ho molti tipi di file: pdf, tiff, jpeg, bmp. ecc. La mia domanda è: come posso modificare l'estensione del file? Ho provato questo:

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

Indipendentemente dal tipo di file, il formato specificato deve essere con il nome del file. Ma non funziona. Ottengo il percorso del file dal browser come c:\..\..\a.jpge il formato del file è a.jpeg. Così, quando si tenta di eliminarlo, mi dà un errore: Cannot find the file on specified path'. Quindi, penso che abbia qualcosa a che fare con l'estensione del file che non corrisponde. Quindi, sto cercando di convertire .jpga .jpeged eliminare il file, allora.


Come non funziona (oltre ad essere lontano dalla compilazione)?
— Albin Sunnanbo

Risposte:


219

C'è: Path.ChangeExtensionmetodo. Per esempio:

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

Nel caso in cui volessi modificare anche fisicamente l'estensione, potresti utilizzare il File.Movemetodo:

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

quindi cambierà l'estensione in jpg? del file originale?
— safi

@Alex Non sto spostando un file, ottengo il percorso del file da broswer come c: \ .. \ .. \ a.jpg, e il formato del file sul percorso fisico è a.Jpeg, quindi quando provo a eliminarlo, mi dà l'errore non riesco a trovare il file sul percorso specificato. quindi penso che abbia qualcosa a che fare con l'estensione del file non corrispondente. quindi sto cercando di convertire jpg in jpeg e quindi eliminare il file.
— safi

3
@safi: dubito che cambiare l'estensione del file in maiuscolo, ad esempio, individuerà un file sul disco. Sei sicuro che il file c:\..\..\a.jpg(nel tuo esempio) esista davvero? Se sì, forse non hai abbastanza privilegi per eliminare questo file? E infine, se si desidera sostituire solo l'estensione del file, utilizzare var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; il newFilePathconterrà un nuovo nome di file con estensione modificata, fisicamente, il nome del file (su disco) non verrà cambiato.
— Alex

1
@safi: vedi, questo var newPath = Path.ChangeExtension("c:/my documents/my images/cars/a where a is a.jpg", string.Empty)rimuoverà l'estensione dal percorso definito come primo parametro del metodo; la newPathvariabile stringa conterrà c:/my documents/my images/cars/a where a is a.valore dopo questa operazione.
— Alex

1
Ci sono così tante cose per cui creiamo codice, ma esiste già in .NET fx. File.Move& Path.ChangeExtension. Freddo ! :-)
— Legends

17

Dovresti fare uno spostamento del file per rinominarlo. Nel tuo codice di esempio stai solo modificando la stringa, non il file:

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

stai solo cambiando myfile (che è una stringa). Per spostare il file effettivo, dovresti farlo

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

Vedere FileInfo.MoveTo


Non sto spostando un file, ottengo il percorso del file da broswer come c: \ .. \ .. \ a.jpg e il formato del file sul percorso fisico è a.Jpeg, quindi quando provo a cancellarlo, mi dà errore non riesce a trovare il file nel percorso specificato. quindi penso che abbia qualcosa a che fare con l'estensione del file non corrispondente. quindi sto provando a convertire jpg in jpeg ed eliminare il file quindi
— safi

Il primo codice non esegue alcuna sostituzione. Devi faremyfile=myfile.Replace(extension,".Jpeg");
— KansaiRobot


4

Il metodo GetFileNameWithoutExtension, come dice il nome, non restituisce l'estensione del file. Nel tuo caso, restituirebbe solo "a". Vuoi aggiungere il tuo ".Jpeg" a quel risultato. Tuttavia, a un livello diverso, questo sembra strano, poiché i file di immagine hanno metadati diversi e non possono essere convertiti così facilmente.


0

Converti il ​​formato del file 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*/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.