使用C#更改文件扩展名


98

我有许多文件类型:pdf,tiff,jpeg,bmp。等等。我的问题是如何更改文件扩展名?我尝试了这个:

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

无论文件是哪种类型,我指定的格式都必须带有文件名。但这行不通。我从类似的浏览器获取文件路径c:\..\..\a.jpg,并且文件格式为a.jpeg。因此,当我尝试删除它时,它给了我一个错误:Cannot find the file on specified path'。因此,我认为这与文件扩展名不匹配有关。所以,我试图转换.jpg.jpeg然后删除该文件。


它如何工作(除了远离编译)?
Albin Sunnanbo 2011年

Answers:


219

有:Path.ChangeExtension方法。例如:

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

如果您还想实际更改扩展名,则可以使用File.Move方法:

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

它将扩展名更改为jpg吗?原始文件?
萨菲2011年

@Alex我不移动文件,我从浏览器获取文件路径,如c:\ .. \ .. \ a.jpg,而物理路径上的文件格式为a.Jpeg,因此当我尝试删除它时,它给我错误,找不到指定路径上的文件。所以我认为这与文件扩展名不匹配有关。所以我试图将jpg转换为Jpeg,然后删除文件。
萨菲2011年

3
@safi:我怀疑将文件扩展名更改为大写会在磁盘上找到文件。您确定文件c:\..\..\a.jpg(在您的示例中)确实存在吗?如果是,也许您没有足够的权限删除此文件?最后,如果您只想替换文件扩展名,请使用var newFilePath = Path.ChangeExtension(myffile, ".Jpg");;在newFilePath将包含一个新的文件名以改变扩展,物理,文件名(在磁盘上)将不会改变。
亚历克斯(Alex)

1
@safi:看,这var newPath = Path.ChangeExtension("c:/my documents/my images/cars/a where a is a.jpg", string.Empty)将从定义为第一个方法参数的路径中删除扩展名;此操作后,newPath字符串变量将包含c:/my documents/my images/cars/a where a is a.值。
亚历克斯(Alex)

1
我们确实为代码创建了很多东西,但是它们已经存在于.NET fx中。File.MovePath.ChangeExtension。好酷!:-)
传奇

17

您应该移动文件以将其重命名。在示例代码中,您仅更改字符串,而不更改文件:

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

您只需更改myfile(这是一个字符串)。要移动实际文件,您应该

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

请参阅FileInfo.MoveTo


我没有移动文件,而是从浏览器获取文件路径,例如c:\ .. \ .. \ a.jpg,而物理路径上的文件格式为a.Jpeg,因此当我尝试删除它时,它给了我错误找不到指定路径上的文件。所以我认为这与文件扩展名不匹配有关。所以我想将jpg转换为Jpeg并删除文件,然后
safi 2011年

第一个代码不做任何替换。您需要做myfile=myfile.Replace(extension,".Jpeg");
KansaiRobot


4

GetFileNameWithoutExtension顾名思义,该方法不返回文件的扩展名。在您的情况下,它将仅返回“ a”。您想要将“ .Jpeg”附加到该结果。但是,在不同的级别上,这似乎很奇怪,因为图像文件具有不同的元数据,并且无法如此轻松地进行转换。


0

将文件格式转换为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*/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.