もちろん、これはExpressとEJSを使ったNode.jsのプログラム例で、ディレクトリを再帰的にスキャンし、入れ子になったファイルとフォルダのリストをウェブページとして提供する：

```
const express = require('express');
const path = require('path');
const fs = require('fs');
const ejs = require('ejs');

const app = express();

// Define the directory to scan
const directoryPath = './public';

// Define the EJS template
const template = `
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Directory Listing</title>
  </head>
  <body>
    <h1>Directory Listing</h1>
    <ul>
      <% for (var i = 0; i < files.length; i++) { %>
        <% var file = files[i]; %>
        <% if (file.isDirectory) { %>
          <li><%= file.name %></li>
          <ul>
            <% for (var j = 0; j < file.files.length; j++) { %>
              <% var subFile = file.files[j]; %>
              <li><%= subFile %></li>
            <% } %>
          </ul>
        <% } else { %>
          <li><%= file.name %></li>
        <% } %>
      <% } %>
    </ul>
  </body>
</html>
`;

// Define the function to scan the directory recursively
function scanDirectory(directoryPath) {
  const files = [];
  const fileNames = fs.readdirSync(directoryPath);
  for (let i = 0; i < fileNames.length; i++) {
    const fileName = fileNames[i];
    const filePath = path.join(directoryPath, fileName);
    const stats = fs.statSync(filePath);
    if (stats.isDirectory()) {
      const nestedFiles = scanDirectory(filePath);
      files.push({ name: fileName, isDirectory: true, files: nestedFiles });
    } else {
      files.push({ name: fileName, isDirectory: false });
    }
  }
  return files;
}

// Define the route to serve the directory listing
app.get('/', function(req, res) {
  const files = scanDirectory(directoryPath);
  const html = ejs.render(template, { files: files });
  res.send(html);
});

// Start the server
app.listen(3000, function() {
  console.log('Server listening on port 3000.');
});
```

このプログラムを使うには、プロジェクトのルートにpublicという名前のディレクトリを作り、その中にいくつかのファイルとフォルダを置く。次に、node app.jsコマンドを使ってプログラムを実行する（プログラムはapp.jsとして保存されていると仮定する）。最後に、ウェブ・ブラウザーを開き、http://localhost:3000 に移動して、ディレクトリのリストを見る。
Sure, here's an example program in Node.js using Express and EJS to recursively scan a directory and serve a nested list of files and folders as a webpage:

const express = require('express');
const path = require('path');
const fs = require('fs');
const ejs = require('ejs');

const app = express();

// Define the directory to scan
const directoryPath = './public';

// Define the EJS template
const template = `
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Directory Listing</title>
  </head>
  <body>
    <h1>Directory Listing</h1>
    <ul>
      <% for (var i = 0; i < files.length; i++) { %>
        <% var file = files[i]; %>
        <% if (file.isDirectory) { %>
          <li><%= file.name %></li>
          <ul>
            <% for (var j = 0; j < file.files.length; j++) { %>
              <% var subFile = file.files[j]; %>
              <li><%= subFile %></li>
            <% } %>
          </ul>
        <% } else { %>
          <li><%= file.name %></li>
        <% } %>
      <% } %>
    </ul>
  </body>
</html>
`;

// Define the function to scan the directory recursively
function scanDirectory(directoryPath) {
  const files = [];
  const fileNames = fs.readdirSync(directoryPath);
  for (let i = 0; i < fileNames.length; i++) {
    const fileName = fileNames[i];
    const filePath = path.join(directoryPath, fileName);
    const stats = fs.statSync(filePath);
    if (stats.isDirectory()) {
      const nestedFiles = scanDirectory(filePath);
      files.push({ name: fileName, isDirectory: true, files: nestedFiles });
    } else {
      files.push({ name: fileName, isDirectory: false });
    }
  }
  return files;
}

// Define the route to serve the directory listing
app.get('/', function(req, res) {
  const files = scanDirectory(directoryPath);
  const html = ejs.render(template, { files: files });
  res.send(html);
});

// Start the server
app.listen(3000, function() {
  console.log('Server listening on port 3000.');
});

To use this program, create a directory named public in the root of your project, and put some files and folders inside it. Then run the program using the command node app.js (assuming the program is saved as app.js). Finally, open your web browser and navigate to http://localhost:3000 to see the directory listing.