Как читать файлы из папки и ее подпапки и записывать в файл JSON? - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу прочитать имена файлов из папки и ее подпапок и хочу создать новый файл mainfest.JSON, в котором будет список всех имен файлов.

Вот требование

**Input:**

\Temp\file1.txt
\Temp\file2.log
\Temp\subTemp\file3.txt
\Temp\subTemp\file4.txt

**Output**
Mainefest.json
[
“file1.txt” : “\Temp\file1.txt”,
“file2.log” : “\Temp\file2.log”,
“file3.txt” : “\Temp\ subTemp \file1.txt”,
“file4.txt” : “\Temp\ subTemp \file1.txt”
]

ниже приведен пример кода

gulp.task('TestApp', function(){
    return gulp.src('./Temp/**/*.*')
        .pipe(
            hash({
                algorithm: 'md5',
                hashLength: 20
            })) // Add hashes to the files' names
            .pipe(gulp.dest('./Output')) // Write the renamed files
            .pipe(hash.manifest('mainfest.json', {
            deleteOld: true,
            sourceDir: __dirname + './output'
        })) // Switch to the manifest file

});

Хорошо работает.но он добавляет хэши, которые я не хочу.

Мне разрешено использовать javascript, gulp, node js.Есть ли кто-нибудь, кто может помочь мне достичь этого.Спасибо.

1 Ответ

0 голосов
/ 20 декабря 2018

Что-то вроде этого должно работать нормально:

const   path=require('path'),
        fs=require('fs');

class Parser{
    constructor(dir,out){
        this.dir=dir;
        this.out=out;
    }
    parse(){
        const res=[];
        this._parse(this.dir,res);
        fs.writeFileSync(this.out,JSON.stringify(res));
    }
    _parse(dir,result){
        for(const entry of fs.readdirSync(dir)){
            if(fs.lstatSync(path.join(dir,entry)).isDirectory()){
                this._parse(path.join(dir,entry),result);
            }else{
                const e={};
                e[entry]=path.join(dir,entry)
                result.push(e)
            }
        }
    }
}
module.exports=Parser;

Вы можете использовать это так:

const parser=require('path/to/file/contains/class'),
      Parser=new parser('dir/to/read','path/to/output/file.json');
Parser.parse();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...