-1
私はfsというモジュールを使用して、再帰的に読み取るディレクトリを要求しようとしています。私は途中で問題を抱えていました。私にはファイル名しか与えられませんでした。ここに私はそれが必要な方法です:フォルダを持つディレクトリを再帰的に読み取る
- ファイル名。
- また、そのファイルのディレクトリ。 この結果は、オブジェクトとして、または配列にまとめられている可能性があります。
誰でも手伝ってください。おかげさまで
私はfsというモジュールを使用して、再帰的に読み取るディレクトリを要求しようとしています。私は途中で問題を抱えていました。私にはファイル名しか与えられませんでした。ここに私はそれが必要な方法です:フォルダを持つディレクトリを再帰的に読み取る
誰でも手伝ってください。おかげさまで
ここには再帰的な解決策があります。あなたはそれをテストし、ファイルに保存し、node yourfile.js /the/path/to/traverse
を実行することができます。
const fs = require('fs');
const path = require('path');
const util = require('util');
const traverse = function(dir, result = []) {
// list files in directory and loop through
fs.readdirSync(dir).forEach((file) => {
// builds full path of file
const fPath = path.resolve(dir, file);
// prepare stats obj
const fileStats = { file, path: fPath };
// is the file a directory ?
// if yes, traverse it also, if no just add it to the result
if (fs.statSync(fPath).isDirectory()) {
fileStats.type = 'dir';
fileStats.files = [];
result.push(fileStats);
return traverse(fPath, fileStats.files)
}
fileStats.type = 'file';
result.push(fileStats);
});
return result;
};
console.log(util.inspect(traverse(process.argv[2]), false, null));
出力は次のようになります。
[ { file: 'index.js',
path: '/stackoverflow/test-class/index.js',
type: 'file' },
{ file: 'message.js',
path: '/stackoverflow/test-class/message.js',
type: 'file' },
{ file: 'somefolder',
path: '/stackoverflow/test-class/somefolder',
type: 'dir',
files:
[ { file: 'somefile.js',
path: '/stackoverflow/test-class/somefolder/somefile.js',
type: 'file' } ] },
{ file: 'test',
path: '/stackoverflow/test-class/test',
type: 'file' },
{ file: 'test.c',
path: '/stackoverflow/test-class/test.c',
type: 'file' } ]
それは動作します!どうもありがとう。あなたは最高です –
あなたがこれまでにしようとしているものをご提示ください –
_「そしてまた、そのファイルのディレクトリ」あなたはすでにこれを持っている_、それ以外の場合はFS方式を使用wouldnあなたが読もうとしていたディレクトリが分からない。各サブディレクトリのパスを意味する場合は、深く進むにつれて、各サブディレクトリ名をパスに連結してください。しかし、あなたのコードを見ることなく、コードを修正する方法を具体的に教えることはできません。 –