2016-06-22 7 views
0

Ich habe ein Stammverzeichnis sagen "A" in diesem Verzeichnis Ich habe viele Verzeichnisse sagen "1", "2", "3", "4 "," 5 "........ und in all diesen Unterverzeichnissen habe ich eine Datei namens gurke.json. Alles, was ich tun möchte, ist die Datei gurk.json zu lesen und das kumulierte Ergebnis zu erhalten. Wie kann ich dies erreichen mit Knoten js.Wie rekursiv lesen Sie die Datei in einer Struktur wie Verzeichnisstruktur in Knoten js

In der folgenden Bildschirmaufnahme ist mein Wurzelverzeichnis "Gurke" und darin habe ich viele Unterverzeichnisse. Alle diese Unterverzeichnisse enthalten eine einzelne Datei mit dem Namen gucurity.json. enter image description here

Gibt es dedizierte Knotenpakete, die meine Arbeit erleichtern können? Lassen Sie mich wissen, wenn weitere Informationen erforderlich sind.

Antwort

2

Hallo zusammen versuchen Sie bitte die folgenden (Javascript): = module.exports { :

// Require filesystem package for IO operations 
var fs = require('fs'); 
// Put the path you are looking for here 
var path = "d:\\nodef"; 

//Call the function defined below 
recursiveloop(path, function(err,result){ 
    /* begin processing of each result */ 
    // For each file in the array 
    for(i=0;i<result.length;i++) 
    { 
    //Write the name of the file 
    console.log('Processing: ' + result[i]); 
    //Read the file 
    fs.readFile(result[i], 'utf8', function(err, data){ 
     //If there is an error notify to the console 
     if(err) console.log('Error: ' + err); 
     //Parse the json object 
     var obj = JSON.parse(data); 
     //Print out contents 
     console.log('Name: ' + obj.name); 
     console.log('Position: ' + obj.position); 
    }) 
    } 
}); 
// Asynchronous function to read folders and files recursively 
function recursiveloop(dir, done) 
{ 
    var results = []; 
    fs.readdir(dir, function(err, list){ 
    if (err) return done(err); 
    var i = 0; 
    (function next() { 
     var file = list[i++]; 
     if (!file) return done(null, results); 
     file = dir + '/' + file; 
     fs.stat(file, function(err, stat) { 
     if (stat && stat.isDirectory()) { 
      recursiveloop(file, function(err, res) { 
      results = results.concat(res); 
      next(); 
      }); 
     } else { 
      results.push(file); 
      next(); 
     } 
     }); 
    })(); 
    }); 
} 
+1

Dieses in ein Modul in iteself durch die Schaffung einer Modulklasse und Definition der rekursiven Methode, wie so genommen werden konnte // Platz recursiveloop Funktion hier } Dann von der anrufCodeFile wie so verwenden: var recursiveloopclass = require ('codefile.js') recursiveloopclass.recursiveloop damit zur Wiederverwendung ermöglicht –

Verwandte Themen