UNPKG

yunpan

Version:

yunpan demo

167 lines (133 loc) 3.49 kB
var fs = require('fs'); function TheFile() { } let _fileObj = { name : '', type : '', size : 0 } let __mySpacePath = '/var/www/html/mySpace/'; //let __mySpacePath ='C:/Users/Administrator/Desktop/toy/mySpace/'; TheFile.prototype = { init : function ( callback ) { this.getfiles( __mySpacePath ).then( (list) => { callback.call({},{files : list , spacePath : __mySpacePath}); }); }, getfiles : function ( dir) { var promise = new Promise (function( resolve, reject ) { fs.readdir(dir, function(err,files) { let fileList = []; if( !files || files.length == 0) { resolve(fileList); return; } files.forEach(function( fileName , index ) { let info = Object.assign({}, _fileObj); info.name = fileName; fs.stat(dir+"/"+fileName,function(err,stat){ if( !err ) { if( stat.isFile() ) { var nameStr = fileName.split('.'); info.type = nameStr[1]; info.size = stat.size; } else if( stat.isDirectory() ) { info.type = 'dir'; } } fileList.push( info ); if( fileList.length === files.length ) { resolve(fileList); } }); }); }) }); return promise; }, del : function( path ) { let that = this; return new Promise (( resolve, reject ) => { try { var files = []; if( fs.statSync(path).isDirectory()) { files = fs.readdirSync(path); files.forEach(function(file,index){ var curPath = path + "/" + file; that.del(curPath); }); fs.rmdirSync(path); } else { fs.unlinkSync(path); } } catch(err) { console.error(err); reject(); } resolve(); }); }, copy : function( dst , src ) { let that = this; return new Promise (( resolve, reject ) => { try { if( fs.statSync(src).isDirectory() ) { if( !fs.existsSync(dst) ) { fs.mkdirSync(dst); } let files = fs.readdirSync(src); files.forEach(function(path){ var _src=src+'/'+path; var _dst=dst+'/'+path; that.copy(_dst,_src); }); } else { let readable=fs.createReadStream(src); let writable=fs.createWriteStream(dst); readable.pipe(writable); } } catch (err) { reject(); console.error(err) } resolve(); }) }, rename : function(oldPath , newPath){ let that = this; return new Promise (( resolve, reject ) => { try { fs.rename(oldPath , newPath,function( err ){ console.log(err); if(err) { reject(); } else { resolve(); } }) } catch (err) { reject(); console.error(err) } }) }, createFile : function(newPath){ let that = this; return new Promise (( resolve, reject ) => { try { fs.mkdir(newPath,function( err ){ console.log(err); if(err) { reject(); } else { resolve(); } }) } catch (err) { reject(); console.error(err) } }) } } module.exports = new TheFile();