0
NodeJsのfsモジュールの読み取り/書き込みストリームを使用して、すべてのファイルを送信元から宛先にコピーしようとしています。すべてのファイルをソースディレクトリからコピー先ディレクトリにコピーする際に、プロミスが解決されない。約束を使ってこれをどのようにすることができますか?
NodeJsのfsモジュールの読み取り/書き込みストリームを使用して、すべてのファイルを送信元から宛先にコピーしようとしています。すべてのファイルをソースディレクトリからコピー先ディレクトリにコピーする際に、プロミスが解決されない。約束を使ってこれをどのようにすることができますか?
、これを試してみてください
const fs = require('fs');
const sourceDirPath = process.argv[2];
const DestinationDirPath = process.argv[3];
const checkInputPaths =()=>{
return new Promise(function(resolve, reject) {
const message = 'please provide source and destination dir path';
if (!(sourceDirPath && DestinationDirPath)) {
console.log(message);
return reject(message);
}
return resolve();
}); //end of promise
};
const readDirFiles = (files)=> {
return new Promise(function(resolve, reject) {
return fs.readdir(sourceDirPath, function(err, files) {
if (err) {
return reject(err);
}
return resolve(files);
});
});
};
const writeLog = (file, log, fileIndex)=> {
return new Promise(function(resolve, reject) {
let dataToAppend = '';
if (fileIndex == 0) {
dataToAppend += `${log} \n${fileIndex + 1}. Copied file ${file}.`;
} else {
dataToAppend = `\n${fileIndex + 1}. Copied file ${file}.`;
}
return fs.appendFile(DestinationDirPath + '/log.txt', dataToAppend, (err) => {
if (err) {
console.log(`Error while appending to file: ${file}`);
return resolve();
}
console.log(`The file: ${file} was appended to log file!`);
return resolve();
});
});
};
const writeFileToDir = (files, log, fileIndex)=> {
return new Promise(function(resolve, reject) {
if (!fileIndex) {
fileIndex = 0;
}
const file = files[fileIndex];
return fs.copyFile(`${sourceDirPath + file}`, `${DestinationDirPath + file}`, function(err) {
if (err) {
console.log(`Error while copying file: ${file} from ${sourceDirPath} to ${DestinationDirPath}`);
return (++fileIndex < files.length) ? writeFileToDir(files, log, fileIndex) : resolve();
}
return writeLog(file, log, fileIndex, log).then(()=>{
return (++fileIndex < files.length) ? writeFileToDir(files, log, fileIndex) : resolve();
});
});
});
};
const copyDir =()=> {
console.log('Started disctory copying process.......');
const log = `:: Files copying from ${sourceDirPath} to ${DestinationDirPath}`;
return readDirFiles().then((files)=>{
return writeFileToDir(files, log).then(()=>{
console.log(`All files copied from ${sourceDirPath} to ${DestinationDirPath} successfully`);
return Promise.resolve();
}).catch((err)=>{
console.log(`Error while copying files from source to destination : ${err}`);
return Promise.reject(err);
});
}).catch((err)=>{
console.log(`Error while copying files from source to destination : ${err}`);
return Promise.reject(err);
});
};
copyDir();
私たちにあなたがこれまでにやっているいくつかのコードを入力してください。 – Krusader