我有这段代码:
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 ..
答案 0 :(得分:1)
添加
.Where(i => i.Extension.Equals(".finfo", StringComparison.InvariantCultureIgnoreCase))
到可枚举的。或者更好,使用EnumerateFiles
的其他重载:
foreach (FileInfo filemove in finfo.Directory.EnumerateFiles("*.finfo")) {
另请注意,MoveTo
仅适用于同一逻辑驱动器。如果这还不够,您需要添加自己的复制+删除方法,以便在驱动器上移动文件。