nodejs怎么访问到根目录下的文件

nodejs怎么访问到根目录下的文件,第1张

可以尝试我开发的 前端开发 构建工具slow-cli 安装 npm install slow-cli -g使用 在本地的html文件目录下运行一次(以后就不用运行了) slow init然后运行 slow start就可以了。 打开浏览器 localhost:3000/xxhtml就可以 访问本地的html文件

然后在入口文件中调用即可:

这样就能一次性引用所有文件了。

该模块还提供了一些额外参数:

这样可以实现两个功能:

这适用于定义为类的控制器文件,如:

nodejs statSync判断一个目录或文件是否存在

获取目录下某个文件中的信息 [ { name, photoUrl, }, ]

目录: 项目名称/app/public/json_tb/user_1/blog_1/commiter_2json

查看以下场景:

在 /js 目录下执行 node foo/indexjs ,会出现文件找不到的情况,原因: /js/foo/indexjs 文件中读文件是写的相对路径也即: /atxt ,而这个相对路径实际上是相对于执行 node 命令所处的路径,也即以上的执行node时,进行文件 *** 作时查找的路径是: js/atxt 显然 /js 目录下没有该文件,也就查找失败。

再看一种场景

在 /js 目录下执行 node otherjs 命令,执行结果为:

原因和之前的一样,虽然在 js 下执行该命令,但是在该文件中还是在引入并执行 indexjs 文件,由于 node 命令执行的目录是: /js 目录,所以在文件 *** 作的时候,查找的文件目录是: /js/atxt ,显然又是找不到的结果

所以在文件 *** 作中,相对路径是不可靠的,为了解决这个问题,则需要将相对路径改为绝对路径。但是如果仅仅是将文件 *** 作的路径改为 C:\node\js\foo\atxt 路径,则当交付项目的时候,还需要将该路径改为当前项目所处计算机的绝对路径,显然这是不可行的,因此 __dirname 开始发挥作用。

而什么 __dirname 是什么呢?

在每个模块中,除了 require 、 exports 等模块相关API之外,还有两个特殊的成员

由于 __dirname 不受node命令所属路径影响,同时又可以动态的获取当前文件的绝对路径,因此可以是个不错的选择,将 /foo/indexjs 修改:

模块中 require 中所写的路径跟文件 *** 作的路径是没有关系的,其路径是相对于文件模块的,也即相对于当前文件模块(文件)所处目录的相对路径。

此时查找 /foo/indexjs 就是相对于 /js 目录

如下读取文件的函数,Nodejs 读取文件后,data是以二进制Buffer格式保存的,Blob格式的数据也是以二进制方式保存的,所以可以说data就是题主想要的 Blob binary data,不知道有没有解决题主的问题。

var fs = require('fs')

fsreadFile('/etc/passwd', function (err, data) {

if (err) throw err

consolelog('isBuffer: ' + BufferisBuffer(data)) // isBuffer: true

consolelog(data) //

})

nodejs对文件的读写还是相当灵活的,可以根据不同的场景来选择不同的方法。

一直接 *** 作文件

最简单的两个fsreadFile和fswriteFile

  举例:这个程序的功能是将一个比较大json格式的文件转换成你想自己要格式的文件。

var fs = require('fs');

fsreadFile('/jsonjson',function(err,data){

if(err) throw err;

var jsonObj = JSONparse(data);

var space = ' ';

var newLine = '\n';

var chunks = [];

var length = 0;

for(var i=0,size=jsonObjlength;i<size;i++){

var one = jsonObj[i];

//what value you want

var value1 = one['value1'];

var value2 = one['value2'];

var value = value1 +space+value2+space++newLine;

var buffer = new Buffer(value);

chunkspush(buffer);

length += bufferlength;

}

var resultBuffer = new Buffer(length);

for(var i=0,size=chunkslength,pos=0;i<size;i++){

chunks[i]copy(resultBuffer,pos);

pos += chunks[i]length;

}

fswriteFile('/resuttext',resultBuffer,function(err){

if(err) throw err;

consolelog('has finished');

});

});

它的原理是将文件数据一次性全部读入内存,优点就是接下来都是在内存的 *** 作,速度会很快。但缺点也很明显,就是当文件非常大时,会造成内存溢出。

二 使用文件流

21 读取文件,api相见:fscreateReadSream 和 fscreateWriterStream

以下代码实现的功能就是通过文件流来实现的复制:

var fs = require('fs');

var rOption = {

flags : 'r',

encoding : null,

mode : 0666

}

var wOption = {

flags: 'a',

encoding: null,

mode: 0666

}

var fileReadStream = fscreateReadStream('/myjpgjpg',rOption);

var fileWriteStream = fscreateWriteStream('/new_myjpgjpg',wOption);

fileReadStreamon('data',function(data){

fileWriteStreamwrite(data);

});

fileReadStreamon('end',function(){

consolelog('readStream end');

fileWriteStreamend();

});

这里再补充在流中非常有用的一个函数:pipe,它以用来把当前的可读流和另外一个可写流连接起来。可读流中的数据会被自动写入到可写流中。使用起来非常方便,依然实现上例中的功能:

var fs = require('fs');

var fileReadStream = fscreateReadStream('/myjpgjpg');

var fileWriteStream = fscreateWriteStream('/new_myjpgjpg');

fileReadStreampipe(fileWriteStream);

fileWriteStreamon('close',function(){

consolelog('copy over');

});

用这个函数可以轻松地实现一个静态资源服务器:

var >

var express = require('express');

var router = expressRouter();

var fs = require("fs");

var f = reqfiles;

var oname=f[0]originalname;

var t = onamesplit("")[1];

var flname = uuidv1() + "" +t;

nodejs作为功能强大的后端开发语言,有许多第三方包扩展nodejs能力。读写excel文件也有相关的第三方扩展。

本文介绍nodejs下如何通过使用node-xlsx扩展读写excel文件。

以上就是关于nodejs怎么访问到根目录下的文件全部的内容,包括:nodejs怎么访问到根目录下的文件、NodeJs批量require文件夹中的所有文件、nodejs statSync判断一个目录或文件是否存在等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9735388.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存