Как прочитать каталог и получить массив всех файлов HTML - PullRequest
1 голос
/ 29 октября 2019

Это вторая часть вопроса, который я задавал ранее, который можно найти здесь: Как использовать переменную в строке

Теперь, когда у меня есть каталог, который я могу использовать, мне нужно найтивсе HTML-файлы в этом каталоге и использовать массив в текущем формате.

HMI.FileManager.addPages(
[
    { name: "Default", title: "Starter Page", url: "Files/HMIBuilder/Default/index.html" },
]);

Этот формат автоматически загружает все страницы, которые добавляются в него. Таким образом, выполняя поиск в текущем каталоге, а затем выполняя массив, он должен создать все страницы в этом каталоге.

У меня уже есть переменная в строке к каталогу, есть ли способ использовать ее, чтобы добраться до каталога и найти его в файлах .html, а затем загрузить массив этих файлов или, возможно, foreach?

Это не работает, но может быть что-то, с чем можно работать ..

htmlFiles = global("*.html")
foreach (htmlFiles as file) {
 path == path(file)
 {name: "path['filename']", title: "path['filename']", url: "path['basename']"},

 }

РЕДАКТИРОВАТЬ: Я добавил это, и кажется, что будет работать для того, что мне нужно сделать. Однако, это дает мне ошибку, что метка не определена ..

 @{ 
    var files = Request.QueryString["name"];
    string[] filePaths Directory.GetFiles(Server.MapPath("~/Files/HMIBuilder/"), files);

           foreach (string name in filePaths)
           {
              { name: name, title: name, url: filePaths },
           }
   }

Редактировать-- Изменил код выше, чтобы быть ниже. Теперь я получаю сообщение об ошибке с переменными, которое говорит, что «имя» является переменной, но используется как тип ... в то время как переменная filePaths в порядке ... Я в замешательстве.

@{ 
   var files = Request.QueryString["name"];
   string[] filePaths = Directory.GetFiles(Server.MapPath("~/Files/HMIBuilder/"), files);

    foreach (string name in filePaths) {

       @:{ name: @{name}, title: @{name}, url: @{filePaths} },

     }

 }

Редактировать:

После долгих бросков кода я наконец-то заставил это работать. Ниже показано, как выглядит окончательный код.

  @{
     var files = Request.QueryString["name"];
     var path = ("/Files/HMIBuilder/");
     var fullpath = Path.Combine(path, files);
     DirectoryInfo d = new DirectoryInfo(Server.MapPath(fullpath));
     FileInfo[] Files = d.GetFiles("*.html");

     foreach (FileInfo name in Files) {


         @:{ name: "@name", title: "@name", url: "@fullpath/@name" },

     }
  } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...