Maison >interface Web >js tutoriel >Méthodes et exemples de copie de fichiers dans Node.js_node.js

Méthodes et exemples de copie de fichiers dans Node.js_node.js

WBOY
WBOYoriginal
2016-05-16 16:46:151309parcourir

Node.js lui-même ne fournit pas d'API pour copier directement des fichiers. Si vous souhaitez utiliser Node.js pour copier des fichiers ou des répertoires, vous devez utiliser d'autres API pour y parvenir. Pour copier un seul fichier, vous pouvez utiliser directement readFile et writeFile, ce qui est plus simple. Si vous copiez tous les fichiers d'un répertoire, celui-ci peut également contenir des sous-répertoires, vous devez alors utiliser une API plus avancée.

Diffusez

Les flux sont la façon dont Node.js déplace les données. Les flux dans Node.js sont lisibles/inscriptibles. Les modules HTTP et du système de fichiers utilisent des flux. Dans le système de fichiers, lors de l'utilisation de flux pour lire des fichiers, un fichier volumineux peut ne pas être lu en une seule fois, mais sera lu plusieurs fois. Les événements de données recevront une réponse lors de la lecture. Après la lecture, vous pouvez opérer sur les données lues. De la même manière, lors de l'écriture dans un flux, tout comme lors de la lecture, les fichiers volumineux ne sont pas écrits en même temps. Cette façon de déplacer des données est très efficace, en particulier pour les fichiers volumineux, l'utilisation de flux est beaucoup plus rapide que d'attendre que l'intégralité du fichier volumineux soit lue avant de l'exploiter.

Pipeline

Si vous souhaitez un contrôle total lors de la lecture et de l'écriture de flux, vous pouvez utiliser des événements de données. Mais pour la copie pure de fichiers, les flux de lecture et d'écriture peuvent transmettre des données via des canaux.

Application pratique :

Copier le code Le code est le suivant :

var fs = require( 'fs' ),
stat = fs.stat;

/*
* Copiez tous les fichiers du répertoire, y compris les sous-répertoires
* @ param{ String } Répertoire à copier
* @param{ String } Copier dans le répertoire spécifié
*/
var copy = function( src, dst ){
// Lire le répertoire Tous les fichiers /répertoires de
fs.readdir( src, function( err, paths ){
if( err ){
throw err;
}

paths.forEach(function( path ){
var _src = src '/' path,
_dst = dst '/' path,
lisible, inscriptible ;

stat( _src, function( err, st ){
if( err ){
throw err;
}

                                                                                                                                                                               Stream( _src );
                                                                                                                         Stream
                                                                                                        }
                                                                                                                                                                                                                                                 depuis 🎜>                                                                                                                                     });
});
} ;

// Avant de copier le répertoire, vous devez déterminer si le répertoire existe. S'il n'existe pas, vous devez d'abord créer le répertoire
var exist = function( src, dst, callback ){
fs.exists( dst, function( exist ) {
                                                                                                                                                                                           fs.mkdir( dst , function(){
                                                                                                                                  de rappel ( src, heure d'été );
//Copier le répertoire
existe( './src', './build', copy );


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn