【问题标题】:Change File Extension Using C#使用 C# 更改文件扩展名
【发布时间】:2011-07-12 17:03:29
【问题描述】:

我有许多文件类型: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 然后删除该文件。

【问题讨论】:

  • 怎么不工作,(除了远不能编译)?

标签: c#


【解决方案1】:

有:Path.ChangeExtension 方法。例如:

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

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

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

【讨论】:

  • 那么它会将扩展名更改为jpg吗?原始文件?
  • @Alex 我没有移动文件,我从浏览器获取文件路径,如 c:\..\..\a.jpg,物理路径上的文件格式是 a.Jpeg,所以当我尝试删除它时,它给了我错误找不到指定路径上的文件。所以我认为这与文件扩展名不匹配有关。所以我正在尝试将 jpg 转换为 Jpeg 并删除该文件。
  • @safi:我怀疑将文件扩展名更改为例如大写将在磁盘上找到一个文件。您确定文件c:\..\..\a.jpg(在您的示例中)确实存在吗?如果是,也许您没有足够的权限来删除此文件?最后,如果您只想替换文件扩展名,请使用var newFilePath = Path.ChangeExtension(myffile, ".Jpg");newFilePath 将包含一个扩展名已更改的新文件名,物理上,文件名(在磁盘上)不会更改。
  • @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. 值。
  • 我们为许多事情创建了代码,但已经存在于 .NET fx 中。 File.Move & Path.ChangeExtension。凉爽的 ! :-)
【解决方案2】:

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

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 然后删除文件
  • 第一个代码不做任何替换。你需要做myfile=myfile.Replace(extension,".Jpeg");
【解决方案3】:

试试这个。

filename = Path.ChangeExtension(".blah") 

在你的情况下:

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

你也应该看看这篇文章:

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

【讨论】:

    【解决方案4】:

    方法GetFileNameWithoutExtension,顾名思义,不返回文件的扩展名。在您的情况下,它只会返回“a”。您想将“.Jpeg”附加到该结果中。但是,在不同的层面上,这似乎很奇怪,因为图像文件具有不同的元数据并且不能那么容易地转换。

    【讨论】:

      【解决方案5】:

      将文件格式转换为 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*/
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-28
        • 1970-01-01
        • 1970-01-01
        • 2017-11-21
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        • 2021-04-09
        相关资源
        最近更新 更多