我拆过的坑cycx

查询一下!

我认为最好的拷贝文件方式,node

nodejs拷贝一个文件到另一个文件夹

背景

背景是公司想做push之前的code review。


本地仓库下的git hook

这里可能要普及一下。在Git本地仓库,可以看到.git/hooks路径下有一些.sample的文件。删除pre-push.sample文件的后缀名,自己编辑一下,就可以了。

但是要确保每个开发自己的Git本地仓库的hooks路径下都有一个pre-push,所以要有一个拷贝动作。一开始我用的是批处理文件,在copy.bat下写了复制的动作。后来由于种种原因,我们的TL建议我把这个动作放到一个js文件中。


NodeJS的复制。

由于我从来没有接触过js,所以开始就百度了一下,首先看了一下参考文献中的[1],不知道为什么,我本地一直调不出来。总是报错。

然后有试了下参考文献中的[2], 这个是好用的,然而是一个文件夹下的所有文件全部拷到另一个文件夹下。而且很长。修改一下也是可以用的,但是还想找一个更好的。

于是,经过层层百度,终于自己写了一个。

附上代码


var fs = require('fs');

var path = require('path');



// 增加文件夹

function createFolder(dirpath, dirname) {

if (typeof dirname === "undefined") {

if (fs.existsSync(dirpath)) {

} else {

createFolder(dirpath, path.dirname(dirpath));

}

} else {

if (dirname !== path.dirname(dirpath)) {

createFolder(dirpath);

return;

}

if (fs.existsSync(dirname)) {

fs.mkdirSync(dirpath)

} else {

createFolder(dirname, path.dirname(dirname));

fs.mkdirSync(dirpath);

}

}

}


// 复制文件

function copyFile(orgfilepath, desdirpath, desfilename) {

    if (fs.existsSync(orgfilepath)) {

let desfilepath = path.join(desdirpath, desfilename);

if (!fs.existsSync(desfilepath)) {

createFolder(desdirpath);

fs.copyFileSync(orgfilepath, desfilepath);

} else {

console.error(Date().toString() + "FolderAndFileOperation_copyFile: des file already existed." + " new path: " + desfilepath.toString());

}

} else {

console.error(Date().toString() + "FolderAndFileOperation_copyFile: org file not existed." + " org path: " + orgfilepath.toString());

}

}


copyFile('./a/1.js', './b', "1.js");


参考文献

[1]https://www.jb51.net/article/122032.htm

[2]https://www.cnblogs.com/coding4/p/7495968.html


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.