Вот то, что я пытаюсь сделать:Как избежать использования цикла Еогеаспа, чтобы получить список файлов по другой причине
У меня есть удаленный сервер (например: Svr01, svr02, svr03). Используя
GetFileList
, чтобы прочитать каталог, получите все файлы и сопоставьте с именем файла, которое у меня есть, затем скопируйте его на локальный диск.Если какие-либо файлы совпадают, я также добавляю их в файл XML.
Я пытался сделать как ниже
class Program
{
static void Main(string[] args)
{
var getfiles = new fileshare.Program();
string realname = "*main*";
string Location = "SVR01";
bool anymatch = false;
foreach (var file in getfiles.GetFileList(realname,Location))
{anymatch=true;}
if (anymatch == true)
{ baseMeta(); }
foreach (var file in getfiles.GetFileList(realname,Location))
{getfiles.copytolocal(file.FullName); }
}
private FileInfo[] GetFileList(string pattern,string Location)
{
try
{
switch (Location)
{
case "SVR01":
{
var di = new DirectoryInfo(@"\\SVR01\Dev");
return di.GetFiles(pattern);
}
case "SVR02":
{
var di = new DirectoryInfo(@"\\SVR02\Dev");
return di.GetFiles(pattern);
}
case "SVR03":
{
var di = new DirectoryInfo(@"\\SVR03\Prod");
return di.GetFiles(pattern);
}
default: throw new ArgumentOutOfRangeException();
}
}
catch(Exception ex)
{ Console.Write(ex.ToString());
return null;
}
}
private void copytolocal(string filename)
{
string nameonly = Path.GetFileName(filename);
File.Copy(filename,Path.Combine(@"c:\",nameonly),true);
}
private void baseMeta()
{
XmlWriter xmlWrite = XmlWriter.Create(@"c:\basexml");
xmlWrite.WriteStartElement("job");
xmlWrite.WriteElementString("Name", "test");
xmlWrite.WriteElementString("time", DateTime);
xmlWrite.Close();
}
}
, но этот кусок кода беспокоит меня, потому что я делаю тот же самый процесс в два раза, любой, пожалуйста, руководство меня, как избежать этого.
foreach (var file in getfiles.GetFileList(realname,Location))
{
anymatch=true;}
if (anymatch == true)
{
baseMeta();
}
foreach (var file in getfiles.GetFileList(realname,Location))
{
getfiles.copytolocal(file.FullName);
}
}
Даже пытается выяснить, если это соответствует anyfile тогда я выйти из первого цикла Еогеаспа генерировать basemeta() затем переходит к следующей итерации Еогеаспа сделать остальную часть процесса.
, спасибо за отличный код, честно говоря, я не мог понять, как это работает, просто интересно, где вы используете «шаблон» в коде. Очень ценю, если вы объясните немного. – Usher
Я не включал эти переменные в свой пример кода, потому что они должны были подразумеваться в их использовании (в первом фрагменте), которые они добавили сейчас. Надеюсь, это имеет смысл. –
, Perfect ... Спасибо тонну – Usher