nodejs에서 폴더를 재귀적으로 복사하는 방법

PHPz
풀어 주다: 2023-05-14 09:03:07
원래의
1775명이 탐색했습니다.

Node.js에서는 폴더를 재귀적으로 복사하는 것이 일반적인 작업입니다. 이 문서에서는 Node.js를 사용하여 폴더 내의 모든 하위 파일과 하위 폴더를 포함하여 전체 폴더를 복사하는 방법을 살펴봅니다.

Node.js에서 폴더를 복사하는 방법에는 크게 두 가지가 있습니다. 하나는 내장된 fs 모듈을 사용하는 것이고, 다른 하나는 타사 모듈을 사용하는 것입니다.

폴더 복사에 내장된 fs 모듈을 사용하세요

Node.js의 내장 fs 모듈은 폴더 복사 기능을 구현하는 데 도움이 되는 여러 API를 제공합니다.

먼저 소스 폴더 경로와 대상 폴더 경로라는 두 가지 매개변수를 받는 함수를 만들어야 합니다.

const fs = require('fs'); const path = require('path'); function copyFolderRecursiveSync(source, target) { // ... }
로그인 후 복사

다음으로 대상 폴더를 만들어야 합니다. 대상 폴더가 존재하지 않으면 fs.mkdirSync() 함수를 사용하여 생성할 수 있습니다.

if (!fs.existsSync(target)) { fs.mkdirSync(target); }
로그인 후 복사

다음으로 소스 폴더의 모든 파일과 하위 폴더를 나열해야 합니다. fs.readdirSync() 함수를 사용하여 소스 폴더에 있는 모든 파일과 하위 폴더의 이름을 가져올 수 있습니다.

const files = fs.readdirSync(source);
로그인 후 복사

각 파일이나 하위 폴더에 대해 파일인지 폴더인지 확인해야 합니다. fs.statSync() 함수를 사용하여 파일이나 폴더의 상태를 가져올 수 있습니다.

files.forEach((file) => { const sourcePath = path.join(source, file); const targetPath = path.join(target, file); const stat = fs.statSync(sourcePath); if (stat.isFile()) { // copy file } else if (stat.isDirectory()) { // copy directory }
로그인 후 복사

파일이 파일이면 fs.copyFileSync() 함수를 사용하여 대상 폴더에 복사할 수 있습니다.

if (stat.isFile()) { fs.copyFileSync(sourcePath, targetPath); }
로그인 후 복사

파일이 폴더인 경우 copyFolderRecursiveSync() 함수를 재귀적으로 호출하여 대상 폴더에 새 폴더를 생성해야 합니다.

if (stat.isDirectory()) { copyFolderRecursiveSync(sourcePath, targetPath); }
로그인 후 복사

전체 코드는 다음과 같습니다.

const fs = require('fs'); const path = require('path'); function copyFolderRecursiveSync(source, target) { if (!fs.existsSync(target)) { fs.mkdirSync(target); } const files = fs.readdirSync(source); files.forEach((file) => { const sourcePath = path.join(source, file); const targetPath = path.join(target, file); const stat = fs.statSync(sourcePath); if (stat.isFile()) { fs.copyFileSync(sourcePath, targetPath); } else if (stat.isDirectory()) { copyFolderRecursiveSync(sourcePath, targetPath); } }); } copyFolderRecursiveSync('path/to/sourceFolder', 'path/to/targetFolder');
로그인 후 복사

폴더 복사에 타사 모듈 사용

내장된 fs 모듈을 사용하는 것 외에도 타사 모듈을 사용하여 폴더 복사 기능을 구현할 수도 있습니다. 여기에서는 일반적으로 사용되는 두 가지 모듈인 fs-extra와 ncp를 소개합니다.

fs-extra 모듈

fs-extra는 파일 및 폴더 복사, 이동, 삭제를 포함하여 내장 fs 모듈보다 더 많은 기능을 제공하는 Node.js용 타사 모듈입니다.

fs-extra의 copySync() 기능을 사용하여 하위 폴더와 파일을 포함한 전체 폴더를 복사할 수 있습니다.

const fs = require('fs-extra'); fs.copySync('path/to/sourceFolder', 'path/to/targetFolder');
로그인 후 복사

ncp 모듈

ncp는 폴더를 재귀적으로 복사하는 데에도 사용할 수 있는 Node.js용 타사 모듈입니다. fs-extra와 달리 ncp는 복제 중 오류를 더 쉽게 처리할 수 있습니다.

ncp의 ncp() 함수를 사용하면 폴더 전체를 복사할 수 있습니다.

const ncp = require('ncp').ncp; ncp('path/to/sourceFolder', 'path/to/targetFolder', function (err) { if (err) { console.error(err); } else { console.log('done'); } });
로그인 후 복사

요약

Node.js에서 폴더를 재귀적으로 복사하는 방법에는 여러 가지가 있습니다. 내장된 fs 모듈을 사용하려면 더 많은 코드를 작성해야 하지만 복사 프로세스를 더 많이 제어할 수 있습니다. 폴더 복사는 타사 모듈인 fs-extra 및 ncp를 사용하면 더 쉽게 수행할 수 있지만 이로 인해 복사 프로세스에 대한 제어가 줄어들 수 있습니다.

위 내용은 nodejs에서 폴더를 재귀적으로 복사하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!