Meteor node.js 复制(copy)文件的方法
2015-06-02 10:43
441 查看
原文:/article/9867473.html
以下三种方法中请注意加:
1. 原文件在private目录下,用Meteor 的Assets读取内容,使用node.js的fs.writeFile()写入,这种方法只能适用文本文件
以下三种方法中请注意加:
var exec = Npm.require('child_process').exec; var fs =Npm.require('fs');
1. 原文件在private目录下,用Meteor 的Assets读取内容,使用node.js的fs.writeFile()写入,这种方法只能适用文本文件
var copyFile=function(){ //检测目标文件是否存在 fs.open( FILE_STORE_AB_PATH+"/aapt",'r',function(err,fd){//fs.open()只能用绝对路径 if (err && err.code=='ENOENT') { console.log('aapt not exists copy....'); fs.writeFile(aapt, Assets.getText('aapt'), function (err) { if (err) throw err; console.log('It\'s saved!'); // fs.chmodSync(aapt,777); }); }else{ console.log('aapt exists'); } }); } 2.用node.js的fs来读写流来读取与写入,但这种方法的目标文件如果是执行文件的话,会没有执行权限。
var copyFile=function(){ fs.open( FILE_STORE_AB_PATH+"/aapt",'r',function(err,fd){//fs.open()只能用绝对路径 if (err && err.code=='ENOENT') { console.log('aapt not exists copy....'); //这种方法没有执行权限 var readable = fs.createReadStream(PROJECT_ROOT_DIRECTORY+'/private/aapt'); // 创建写入流 var writable = fs.createWriteStream(FILE_STORE_AB_PATH+"/aapt"); // 通过管道来传输流 readable.pipe( writable ); //不知为什么这个方法不起作用,改不了权限 //fs.chmodSync(FILE_STORE_AB_PATH+"/aapt",777); }else{ console.log('aapt exists'); } }); } 3. 使用node.js调用bash命令cp 来复制,这样复制的文件同时有了执行权限 var copyFile=function(){ fs.open( FILE_STORE_AB_PATH+"/aapt",'r',Meteor.bindEnvironment(function(err,fd){//fs.open()只能用绝对路径 if (err && err.code=='ENOENT') { console.log('aapt not exists copy....'); incopy=true; exec('cp '+PROJECT_ROOT_DIRECTORY+'/private/aapt '+FILE_STORE_AB_PATH, Meteor.bindEnvironment(function(error, stdout, stderr) { console.log('It\'s cpoyed!'); incopy=false; })); }else{ console.log('aapt exists'); } })); } 原文:/article/9867473.html
相关文章推荐
- Node.js事件循环
- 开始刷leetcode day29:Swap Nodes in Pairs
- Node.js C++扩展实现
- 如何用Nodejs开发自动发送email的程序
- HDFS-2.7.0系列3: hdfs namenode -format
- DataNode没有启动的原因
- Nodejs 异步式 I/O 与事件式编程
- Leetcode Problem.19—Remove Nth Node From End of List
- NodeJS
- nodejs 调试总结
- Node.js回调概念
- Node.js npm
- Node.js REPL终端
- Node.js入门实例程序
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- Node.js安装和入门
- 多次格式化namenode之后datanode无法启动
- XPath 获取两个node中间的HTML Nodes
- nodejs介绍
- nodejs基础: 如何升级Noejs版本