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

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

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

}

时间: 2024-10-25 13:17:57

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

Node.js入门:文件查找机制

文件查找流程图 从文件模块缓存中加载 尽管原生模块与文件模块的优先级不同,但是都不会优先于从文件模块的缓存中加载已经存在的模块. 从原生模块加载 原生模块的优先级仅次于文件模块缓存的优先级.require方法在解析文件名之后,优先检查模块是否在原生模块列表中.以http模块为例,尽管在目录下存在一个http/http.js/http.node/http.json文件,require("http")都不会从这些文件中加载,而是从原生模块中加载. 原生模块也有一个缓存区,同样也是优先从缓存

Node.js express获取参数有三种方法

Node.js express获取参数有三种方法 近本人在学习开发NodeJs,使用到express框架,对于网上的学习资料甚少,因此本人会经常在开发中做一些总结. express获取参数有三种方法:官网介绍如下 Checks route params (req.params), ex: /user/:id Checks query string params (req.query), ex: ?id=12 Checks urlencoded body params (req.body), ex

node.js中的url.parse方法使用说明

node.js中的url.parse方法使用说明 *方法说明:* 讲一个URL字符串转换成对象并返回 代码如下: url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) 接收参数: urlStr                                       url字符串 parseQueryString                   为true时将使用查询模块分析查询字符串,默认为false slashesDeno

node.js编译less文件

大多数文章对于到底怎样编译less文件并没有一个详细的说明,清一色的grunt命令,看得也是晕晕的,所以也就有了这篇手记的存在. 步入正题 1.安装配置好sublime text3(包括各种实用插件)和node.js后,新建一个文件夹,这里取名less_test,文件目录结构如下:其中node_modules文件夹是调用npm install命令的时候在当前目录下创建的安装模块.2.在test.less文件里面随意写些代码:3.打开命令行(cmd),进入less_test文件夹,输入npm in

node.js 和 node-webkit C++扩展方法

构建node扩展的方法: 1,安装node.js 版本为0.10.24.msi 2,安装node-gyp, npm install -g node-gyp 3,构建 hello工程 cd 到 node-gyp-hello\src node-gyp configure node-gyp build 构建node-webkit扩展的方法: 1,安装node.js 版本为0.10.24.msi 2,安装nw-gyp, npm install -g  nw-gyp 3,构建 hello工程 cd 到 n

Node.js上传文件

var formidable = require('formidable'); var util = require('util'); exports.upload = function(req,res){ var form = new formidable.IncomingForm(); form.encoding = 'utf-8'; form.uploadDir = "E:/file/upload";//目录需要已存在 /** * fields 表单中的其他属性 * files

使用Node.JS监听文件夹变化

使用Node.JS监听文件夹改变有许多应用场合,比如: 构建自动编绎工具 当源文件改变时,自动运行build过程,比如当你写CoffeeScript文件或SASS CSS文件时,保存之后可即时生成对应的JS或CSS. 构建自动布署工具 通过侦听源文件夹的改变,你可以自动即时将改后的文件布署到测试服务器,加快你的开发测试速度. 这些工具其实都需要侦听文件夹的改变,基于Node.JS的侦听文件夹改变的模块有很多. fs.watch 其中Node.JS的文件系统也可侦听某个目录的改变, 如fs.wat

node.js中的fs.rename()方法

node.js 中的fs.rename()模块 var fs=require('fs');//node.js的核心模块 原生模块.修改文件名称,可更改文件的存放路径 方法说明 : 修改文件名称,可更改文件的存放路径 基本语法 fs.rename(oldFile, newFile, [callback(err)]) router.post('/addAction',upload.single('ppic'),function(req, res, next) { var arr=req.file.o

Node.js 手册查询-2-MongoDB数据库方法

MongoDb 标签(空格分隔): 数据库 MongoDb 安装 当前版本 2.X 解压至任意目录,最好不要是c盘. 在根目录下建立一个文件夹用来存储工程 我的例子: 安装至: d:\mongodb 建立存储目录 d:\mongodb\blog 运行CMD,切入bin目录 cd d:\mongodb\bin 启用数据库 mongod -dbpath “d:\mongodb\blog” 这样就完毕了,如果关闭CMD,数据库就会关闭. 建立一个快速启动的bat文件,因为每次启动服务器都是这样的命令