C#FileInfo名称foreach

时间:2015-07-23 11:28:13

标签: c#

我有这段代码:

FileInfo finfo = new FileInfo(Path.Combine(Directory.GetCurrentDirectory(), "cleo", file.Key));

DialogResult modifiedcleofiles = MessageBox.Show("error", "error title", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); 
if(modifiedcleofiles == DialogResult.OK)
{
    Message.Info(finfo.Name); //It prints filename ok
    if (!Directory.Exists(Path.Combine(Directory.GetCurrentDirectory(), "gs", "CLEO"))) 
        Directory.CreateDirectory(Path.Combine(Directory.GetCurrentDirectory(), "gS", "CLEO"));

    foreach (FileInfo filemove in finfo) //I don't know how to make foreach
    {
        filemove.MoveTo(Path.Combine(Directory.GetCurrentDirectory(), "gS", "CLEO", filemove.Name));
    }
}

所以这是我的问题。这段代码没有foreach工作正常,它适用于:

finfo.MoveTo(Path.Combine(Directory.GetCurrentDirectory(), "gS", "CLEO", finfo.Name));

没关系,但是如果有超过2个文件等等。它显示了两个消息框..我不想移动所有 finfo 文件。 注意所有finfo文件,而不是文件夹中存在的所有文件!提前感谢:( P.S不要给-karma等,我是新手..

P.S我试过这段代码:

foreach (FileInfo filemove in finfo.Directory.EnumerateFiles()) {
    filemove.MoveTo(Path.Combine(Directory.GetCurrentDirectory(), "gS", "CLEO", filemove.Name));
}

它移动了该文件夹中的所有文件,但我只需要finfo ..

1 个答案:

答案 0 :(得分:1)

添加

.Where(i => i.Extension.Equals(".finfo", StringComparison.InvariantCultureIgnoreCase))

到可枚举的。或者更好,使用EnumerateFiles的其他重载:

foreach (FileInfo filemove in finfo.Directory.EnumerateFiles("*.finfo")) {

另请注意,MoveTo仅适用于同一逻辑驱动器。如果这还不够,您需要添加自己的复制+删除方法,以便在驱动器上移动文件。