>웹 프론트엔드 >JS 튜토리얼 >Node.js_node.js의 파일 복사 방법 및 예

Node.js_node.js의 파일 복사 방법 및 예

WBOY
WBOY원래의
2016-05-16 16:46:151308검색

Node.js 자체는 파일을 직접 복사하기 위한 API를 제공하지 않습니다. Node.js를 사용하여 파일이나 디렉터리를 복사하려면 다른 API를 사용해야 합니다. 단일 파일을 복사하려면 readFile 및 writeFile을 직접 사용하면 더 쉽습니다. 디렉터리의 모든 파일을 복사하는 경우 해당 디렉터리에 하위 디렉터리도 포함될 수 있으므로 고급 API를 사용해야 합니다.

스트리밍

스트림은 Node.js가 데이터를 이동하는 방식입니다. Node.js의 스트림은 읽기/쓰기가 가능합니다. HTTP 및 파일 시스템 모듈은 모두 스트림을 사용합니다. 파일 시스템에서 스트림을 사용하여 파일을 읽을 때 큰 파일을 한 번에 읽지 못할 수 있지만 여러 번 읽혀집니다. 읽은 후 데이터 이벤트가 응답됩니다. 마찬가지로 스트림에 쓸 때도 읽을 때와 마찬가지로 대용량 파일을 한 번에 쓰지 않습니다. 이러한 데이터 이동 방법은 특히 대용량 파일의 경우 매우 효율적입니다. 스트림을 사용하는 것은 파일을 작동하기 전에 전체 대용량 파일을 읽을 때까지 기다리는 것보다 훨씬 빠릅니다.

파이프라인

스트림을 읽고 쓸 때 완전한 제어를 원하는 경우 데이터 이벤트를 사용할 수 있습니다. 그러나 순수 파일 복사의 경우 읽기 스트림과 쓰기 스트림은 파이프를 통해 데이터를 전송할 수 있습니다.

실용적 적용:

코드 복사 코드는 다음과 같습니다.

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

/*
* 하위 디렉터리를 포함한 디렉터리의 모든 파일 복사
* @ param{ String } 복사할 디렉터리
* @param{ String } 지정된 디렉터리에 복사
*/
var copy = function( src, dst ){
// 디렉터리 읽기 모든 파일 /디렉터리
fs.readdir( src, function( err, paths ){
if( err ){
throw err;
}

paths.forEach(function( path ){
var _src = src '/' 경로,
_dst = dst '/' 경로,
읽기 가능, 쓰기 가능;

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

                                                                                                             스트리밍 스트리밍 ~ > ~                                 이후 🎜>                                                                                                                       });
});
} ;

// 디렉터리를 복사하기 전에 디렉터리가 존재하는지 확인해야 합니다. 디렉터리가 없으면 먼저 디렉터리를 만들어야 합니다.
var presents = function( src, dst, callback ){
fs.exists( dst, 함수( 존재함) {
                                                                                                                fs.mkdir( dst , function(){
                                                                                                                     콜백( src, dst );
//디렉터리 복사
존재( './src', './build', copy );



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.