使用datagridview列值重命名目录中的所有文件名

时间:2014-06-12 03:34:17

标签: c# datagridview file-rename

我有一个datagridview

ID     Name
-----------
1      ABC    
2      DEF    
3      XYZ

目录中有3个文件

ABC.csv
DEF.csv
XYZ.csv

如何循环浏览文件名并根据其ID重命名,以便它们变为

1.csv
2.csv
3.csv

这是我的代码,但我不知道从datagridview中检索ID。任何帮助将非常感激!谢谢。 :)

DirectoryInfo d = new DirectoryInfo(sourceDirCSV);
FileInfo[] infos = d.GetFiles();
foreach (FileInfo f in infos)
{
    try
    {
        File.Move(f.FullName, f.FullName.ToString().Replace(Path.GetFileNameWithoutExtension(sourceDirCSV), "???"));
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

2 个答案:

答案 0 :(得分:1)

您可以尝试使用以下内容:

遍历DataGrid的所有行:

foreach(DataGridViewRow row in DataGridView1.Rows)
{
    string colVal=row.Cells(1).Value.ToString();
    foreach (string currFilename in Directory.GetFiles(path, "*.csv").Select(Path.GetFileName))
    {
      //Path.GetFileNameWithoutExtension(fi.Name): this will get file name without extension
       if(colVal.Equals(currFilename))
       {
        //rename file here
       }
    }
}

请根据您的要求进行更改,不要使用""。

希望这可以帮到你!

答案 1 :(得分:1)

我会做这样的事情:

        string sourceDir = "D:\\Temp\\";
        DirectoryInfo d = new DirectoryInfo(sourceDir);
        string newFileName = "";
        string oldFileName = "";
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            newFileName = sourceDir + row.Cells["ID"].Value.ToString() + ".csv";
            oldFileName = sourceDir + row.Cells["Name"].Value.ToString() + ".csv";

            if (File.Exists(oldFileName))
            {
                File.Move(oldFileName, newFileName);
            }                
        }