JSON

Meteor node.js 复制(copy)文件的方法

字号+ 作者:H5之家 来源:H5之家 2016-01-25 19:50 我要评论( )

以下三种方法中请注意加:var exec = Npm require( child_process ) exec;var fs =Npm require( fs );1 原文件在private目录下,用Meteor 的Assets读取内容,使

以下三种方法中请注意加:

 

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');
        }
    }));
    
}
 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Shunter - a Node.js application built to read JSON and trans

    Shunter - a Node.js application built to read JSON and trans

    2015-11-17 11:39

  • Node.js + Express + MongoDB教程

    Node.js + Express + MongoDB教程

    2015-11-11 10:30

  • 《node.js开发指南》读书笔记(一)

    《node.js开发指南》读书笔记(一)

    2015-11-10 15:37

  • 详细介绍JSON-P技术

    详细介绍JSON-P技术

    2015-10-30 16:23

网友点评