繁体   English   中英

如何在C#中单击一个按钮更改两种类型的文件扩展名?

[英]How to change 2 types of file extensions on one button click in c#?

我想同时更改更多文件扩展名,例如,将所有.txt文件更改为.txt.NO,将.jpg.NO更改为.jpg

我的代码如下所示:

private void button_Click(object sender, EventArgs e)
{
    DirectoryInfo d = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
    FileInfo[] infos = d.GetFiles();
    foreach (FileInfo f in infos)
    {
        File.Move(f.FullName, f.FullName.ToString().Replace(".txt", ".txt.NO"));
        File.Move(f.FullName, f.FullName.ToString().Replace(".jpg.NO", ".jpg"));
    }
}

尝试一次进行2次更改时出现错误。 当我仅使用第一条File.Move行时,我的程序正在运行。

当您在第一行中重命名文件时,第二行将失败,因为该文件不再具有该名称。

您需要基于文件扩展名的条件。

foreach (FileInfo f in infos)
{
   if(f.FullName.EndsWith(".txt"))
      File.Move(f.FullName, f.FullName.ToString().Replace(".txt", ".txt.NO"));
   else if(f.FullName.EndsWith(".jpg.NO"))
      File.Move(f.FullName, f.FullName.ToString().Replace(".jpg.NO", ".jpg"));
}

问题是您要移动/重命名同一个文件两次,并且在第二次Move ,属性f.FullName仍然是扩展名为.txt文件,但是此文件已不存在,因为您已经移动了它。

您应该使用条件检查它是文本文件还是图像。

像这样的东西

foreach (FileInfo f in infos)
{
    if (f.FullName.EndsWith(".txt"))
    {
        File.Move(f.FullName, f.FullName.ToString().Replace(".txt", ".txt.NO"));
    }
    else if (f.FullName.EndsWith(".jpg.NO"))
    {
        File.Move(f.FullName, f.FullName.ToString().Replace(".jpg.NO", ".jpg"));
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM