簡體   English   中英

C#Linq to XML檢查目錄是否存在

[英]C# Linq to XML Checking If Directory Exists

我有以下XML文件布局:

<TopNode>
  <AppRun Date="26-Jun-17 02:15">
    <Folder Name="Folder1">
      <SubFolder Name="SubFolder1" />
      <SubFolder Name="SubFolder2" />
    </Folder>
    <Folder Name="Folder2">
      <SubFolder Name="SubFolder1" />
      <SubFolder Name="SubFolder2" />
    </Folder>
  </AppRun>
</TopNode>

我將以下frankencode混在一起:

        TopNode.Add(new XElement("AppRun",
            new XAttribute("Date", DateTime.Now.ToString("dd-MMM-yy hh:mm")),
            _folderNameArray.Select(x => new XElement("Folder", new XAttribute("Name", x),
                Directory.GetDirectories(Path.Combine(_sourceDirectory, x), "*", SearchOption.TopDirectoryOnly).
                                             Select(y => new XElement("SubFolder", new XAttribute("Name", Path.GetFileNameWithoutExtension(y))))))));

所以我將文件夾元素名稱保持在數組中,因為它們保持不變; 但是,文件夾可能並不總是在那里。 因此,當應用程序嘗試執行目錄時,它將引發DirectoryNotFound異常。 即使目錄不存在,我也想在xml中保留一個空的文件夾元素。

有人可以指出正確的方向來編輯此代碼塊,以在嘗試探查之前檢查目錄是否存在。

這將在您的文件夾列表中獲得所有子文件夾

var mainFolder = "C:\\";
            var folders = new []{ "Test" , "ABCFG" };

            var data = new XElement("AppRun", 
                       from folderName in folders
                       let path = Path.Combine(mainFolder,folderName)
                       select new XElement("Folder", 
                           new XAttribute("Name",folderName), 
                           Directory.Exists(path) ? from subDir in  Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly)
                                                    select new XElement("SubFolder",new XAttribute("Name", Path.GetFileNameWithoutExtension(subDir))): null));

            Console.WriteLine(data.ToString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM