Heim >Web-Frontend >js-Tutorial >Methoden und Beispiele zum Kopieren von Dateien in Node.js_node.js

Methoden und Beispiele zum Kopieren von Dateien in Node.js_node.js

WBOY
WBOYOriginal
2016-05-16 16:46:151312Durchsuche

Node.js selbst stellt keine API zum direkten Kopieren von Dateien bereit. Wenn Sie Node.js zum Kopieren von Dateien oder Verzeichnissen verwenden möchten, müssen Sie dazu andere APIs verwenden. Um eine einzelne Datei zu kopieren, können Sie readFile und writeFile direkt verwenden, was einfacher ist. Wenn Sie alle Dateien in ein Verzeichnis kopieren und das Verzeichnis möglicherweise auch Unterverzeichnisse enthält, müssen Sie eine erweiterte API verwenden.

Streamen

Streams sind die Art und Weise, wie Node.js Daten verschiebt. Sowohl HTTP- als auch Dateisystemmodule verwenden Streams. Wenn im Dateisystem Streams zum Lesen von Dateien verwendet werden, kann es sein, dass eine große Datei nicht auf einmal, sondern mehrmals gelesen wird. Beim Lesen wird auf Datenereignisse reagiert. Nach dem Lesen können Sie die gelesenen Daten bearbeiten. Ebenso werden beim Schreiben in einen Stream, genau wie beim Lesen, große Dateien nicht auf einmal geschrieben. Diese Art der Datenverschiebung ist besonders bei großen Dateien sehr effizient. Die Verwendung von Streams ist viel schneller, als darauf zu warten, dass die gesamte große Datei gelesen wird, bevor die Datei bearbeitet wird.

Pipeline

Wenn Sie beim Lesen und Schreiben von Streams vollständige Kontrolle wünschen, können Sie Datenereignisse verwenden. Beim reinen Kopieren von Dateien können Lese- und Schreibströme jedoch Daten über Pipes übertragen.

Praktische Anwendung:

Code kopieren Der Code lautet wie folgt:

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

/*
* Alle Dateien im Verzeichnis einschließlich Unterverzeichnisse kopieren
* @ param{ String } Zu kopierendes Verzeichnis
* @param{ String } In das angegebene Verzeichnis kopieren
*/
var copy = function( src, dst ){
// Verzeichnis lesen Alle Dateien /directories of
fs.readdir( src, function( err, paths ){
if( err ){
throw err;
}

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

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

                                                                                                                                                              Stream( _src. );
                                                                                           Stream
                                                                                                                                                                                                                                                                                                      seit 🎜>                                                                                                                                 });
});
} ;

// Bevor Sie das Verzeichnis kopieren, müssen Sie feststellen, ob das Verzeichnis existiert. Wenn es nicht existiert, müssen Sie zuerst das Verzeichnis erstellen
var exist = function( src, dst, callback ){
fs.exists( dst, function( exist ) {
                                                                                                                                                                                                                                                                                                      Rückruf( src, dst );
//Verzeichnis kopieren
exists( './src', './build', copy );



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn