使用C#更改文件扩展名

saf*_*afi 89 c#

我有很多文件类型:pdf,tiff,jpeg,bmp.我的问题是如何更改文件扩展名?我试过这个:

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

无论它是什么类型的文件,我指定的格式必须是文件名.但它不起作用.我从浏览器中获取文件路径c:\..\..\a.jpg,文件格式为a.jpeg.所以,当我尝试删除它时,它会给我一个错误:Cannot find the file on specified path'.所以,我认为它与文件扩展名不匹配有关.所以,我试图转换.jpg.jpeg并删除文件即可.

Ale*_*lex 200

有:Path.ChangeExtension方法.例如:

var result = Path.ChangeExtension(myffile, ".jpg");
Run Code Online (Sandbox Code Playgroud)

如果您还想要物理更改扩展名,可以使用以下File.Move方法:

File.Move(myffile, Path.ChangeExtension(myffile, ".jpg"));
Run Code Online (Sandbox Code Playgroud)

  • 我们确实为很多事情创建了代码,但它们已经存在于 .NET fx 中。`文件.移动`和`路径.更改扩展`。凉爽的 !:-) (4认同)
  • @safi:我怀疑将文件扩展名更改为例如大写将在磁盘上找到一个文件.你确定文件`c:\ ..\..\a.jpg`(在你的例子中)确实存在吗?如果是,可能您没有足够的权限来删除此文件?最后,如果您只想替换文件扩展名,请使用`var newFilePath = Path.ChangeExtension(myffile,".Jpg");`; `newFilePath`将包含一个带有更改扩展名的新文件名,在物理上,文件名(在磁盘上)将不会被更改. (3认同)

Mic*_*eem 17

您应该移动文件以重命名它.在您的示例代码中,您只更改字符串,而不是文件:

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

你只是在改变myfile(这是一个字符串).要移动实际文件,您应该这样做

FileInfo f = new FileInfo(myfile);
f.MoveTo(Path.ChangeExtension(myfile, ".Jpeg"));
Run Code Online (Sandbox Code Playgroud)

请参阅FileInfo.MoveTo


JAi*_*iro 8

试试这个.

filename = Path.ChangeExtension(".blah") 
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

myfile= c:/my documents/my images/cars/a.jpg;
string extension = Path.GetExtension(myffile);
filename = Path.ChangeExtension(myfile,".blah") 
Run Code Online (Sandbox Code Playgroud)

你也应该看看这篇文章:

http://msdn.microsoft.com/en-us/library/system.io.path.changeextension.aspx