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.