我正在構建一個 node.js 應用程式,我需要在其中讀取父檔案夾中的所有檔案夾并按照它們在頁面上的創建順序顯示它們的名稱。這是我到目前為止所擁有的:
function getMixFolders() {
const { readdirSync } = require('fs');
const folderInfo = readdirSync('./shahspace.com/music mixes/')
.filter(item => item.isDirectory() && item.name !== 'views');
return folderInfo.map(folder => folder.name);
}
如您所見,我還沒有實作排序。這是因為 readdirSync 不回傳我需要的資訊。它回傳的唯一內容是檔案夾的名稱和稱為 Symbol(type) 的東西(這似乎表明它是檔案夾還是檔案)。
是否有另一種方法可以獲取有關我從父檔案夾中讀取的檔案夾的更多詳細資訊?具體創建日期?
uj5u.com熱心網友回復:
nodejs 中沒有超級有效的方法來獲取目錄串列并獲取每個專案的統計資訊(例如 createDate)。相反,您必須將串列提煉到您感興趣的檔案/檔案夾,然后fs.statSync()對每個檔案/檔案夾進行呼叫(或其中一個類似的變體)以獲取該資訊。這是一個作業版本,看起來像您想要的那樣:
- 使用
{withFileTypes: true}選項獲取目錄串列 - 過濾到檔案夾
- 忽略任何名為“views”的檔案夾
- 獲取每個檔案夾的createDate
- 按該 createDate 按升序對結果進行排序(最舊的檔案夾在前)
此代碼可以作為它自己的程式運行以進行測驗:
const fs = require('fs');
const path = require('path');
const mixPath = './shahspace.com/music mixes/';
function getMixFolders() {
const folderInfo = fs.readdirSync(mixPath, { withFileTypes: true })
.filter(item => item.isDirectory() && item.name !== 'views')
.map(folder => {
const fullFolderPath = path.join(path.resolve(mixPath), folder.name);
const stats = fs.statSync(fullFolderPath);
return { path: fullFolderPath, ctimeMs: stats.ctimeMs }
}).sort((a, b) => {
return a.ctimeMs - b.ctimeMs;
});
return folderInfo;
}
let result = getMixFolders();
console.log(result);
如果您希望最終陣列僅為檔案夾名稱而沒有 createDates,您可以再添加一個.map()以轉換最終結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/400130.html
上一篇:更改熊貓表中的日期格式
