node.js的fs核心模块读写文件操作 -----由浅入深
node.js 里fs模块
常用的功能
实现文件的读写 目录的操作
- 同步和异步共存 ,有异步不用同步
- fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFile方法
- 文件大分流读取,stream
- 引入fs模块
- let fs=require('fs')
同步读取文件
-fs.readFileSync('路径',utf8);
let result=fs.readFileSync('./1.txt','utf8');
异步读取文件,用参数err捕获错误
- fs.readFile('路径','utf8',function(){})
fs.readFile('./name.txt','utf8',function(err,data){
if(err){
console.log(err)
}else{
console.log(data)
}
})
同步写入文件
- fs.writeFileSync("路径",写入的数据)
fs.writeFileSync("./1.txt",JSON.stringify({name:1}))
异步写入文件
- fs.writeFile('路径',写入的数据,callback)
fs.writeFile('./1.txt','aaaaa',function (err) {
if(err){
console.log(err);
}
})
读写文件写一个拷贝实例
let fs=require("fs");
//同步拷贝
function copySync(source,target){
//同步读取
let result=fs.readFileSync(source,'utf8');
//同步写入
fs.writeFileSync(target,result);
}
copySync("./age.txt",'./1.txt');
//异步拷贝
function copy(sourse,target,callback){
//异步读取
fs.readFile(sourse,'utf8',function(err,data){
if(err){
return callback(err)
}else{
//异步写入
fs.writeFile(target,data,callback)
}
});
};
copy('./name.txt','./ss.txt',function(err){
if(err) return console.log(err);
console.log('拷贝成功')
})
判断文件存不存在
- fs.existsSync('文件的路径')
stat方法
fs.stat('文件路径',function (err,stat) {
stat.isDirectory 看是不是文件夹
stat.isFile 看是不是文件
})
删除文件夹
- fs.rmdir('文件夹路径',function(){})
删除文件
- fs.unlink('文件路径',function(){})
//判断文件存不存在
if(fs.existsSync('./b')){
fs.stat('./b',function (err,stat) {
//stat中的time是用来做服务器缓存
//stat.isDirectory看是不是文件夹 stat.isFile看是不是文件
if(stat.isDirectory()){
//删除文件夹
fs.rmdir('./b',function(){})
}else{
//删除文件
fs.unlink('./b',function(){});
}
})
}
利用递归写一个文件夹依次创建
function md(url) {
let paths=url.split('/'); //将a/b/c拆分成数组['a','b','c']
let index=0;
function make(path){
if(index===paths.length+1){ // 如果到终点,停止递归
return false;
}
if(!fs.existsSync(path)){ //不存在
//创建文件夹
fs.mkdir(path,function () {
make(paths.slice(0,++index).join('/'))
})
}else{ //存在
make(paths.slice(0,++index).join('/'))
}
}
make(paths[index++]) //先取出第一个
}
md('a/b/c/d');
node.js的fs核心模块读写文件操作 -----由浅入深的更多相关文章
- Node.js:fs文件系统模块
fs文件系统模块,这是一个非常重要的模块,对文件的操作都基于它.该模块的所有方法都有同步和异步两种方式,下面便介绍一下该模块的使用. 1.检测当前进程对文件的权限 使用fs.access(path[, ...
- node.js中fs文件系统模块的使用
node.js中为我们提供了fs文件系统模块,实现对文件或目录的创建,修改和删除等操作. fs模块中,所有的方法分为同步和异步两种实现. 有 sync 后缀的方法为同步方法,没有 sync 后缀的方法 ...
- node.js—创建、删除、追加文件等方法汇总
使用Node.js的fs模块必须在electron项目里 /* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs ...
- node.js 使用 UglifyJS2 高效率压缩 javascript 文件
UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩. 最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 ...
- 33.Node.js 文件系统fs
转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node ...
- Node.js权威指南 (4) - 模块与npm包管理工具
4.1 核心模块与文件模块 / 574.2 从模块外部访问模块内的成员 / 58 4.2.1 使用exports对象 / 58 4.2.2 将模块定义为类 / 58 4.2.3 为模块类定义类变量或类 ...
- node.js(七) 子进程 child_process模块
众所周知node.js是基于单线程模型架构,这样的设计可以带来高效的CPU利用率,但是无法却利用多个核心的CPU,为了解决这个问题,node.js提供了child_process模块,通过多进程来实现 ...
- node.js第二天之模块
一.模块的定义 1.在Node.js中,以模块为单位划分所有功能,并且提供了一个完整的模块加载机制,这时的我们可以将应用程序划分为各个不同的部分. 2.狭义的说,每一个JavaScript文件都是一个 ...
- node.js 如何处理一个很大的文件
node.js 如何处理一个很大的文件 思路 arraybuffer 数据分段 时间分片 多线程 web workers sevice workers node.js 如何处理一个很大的文件 http ...
随机推荐
- Angular4.0从入门到实战打造在线竞拍网站学习笔记之三--依赖注入
Angular4.0基础知识之组件 Angular4.0基础知识之路由 依赖注入(Dependency Injection) 正常情况下,我们写的代码应该是这样子的: let product = ne ...
- Angular4.0从入门到实战打造在线竞拍网站学习笔记之四--数据绑定&管道
Angular4.0基础知识之组件 Angular4.0基础知识之路由 Angular4.0依赖注入 数据绑定 数据绑定允许你将组件控制器的属性和方法与组件的模板连接起来,大大降低了开发时的编码量. ...
- word2vec原理(二) 基于Hierarchical Softmax的模型
word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...
- Java利用内存映射文件实现按行读取文件
我们知道内存映射文件读取是各种读取方式中速度最快的,但是内存映射文件读取的API里没有提供按行读取的方法,需要自己实现.下面就是我利用内存映射文件实现按行读取文件的方法,如有错误之处请指出,或者有更好 ...
- 双向lstm-crf源码的问题和细微修改
别人的源码地址:https://github.com/chilynn/sequence-labeling/ 如果你训练就会发现loss降到0以下,按照他设定的目标函数,loss理论上应该是大于0的,仔 ...
- 19. leetcode 100. Same Tree
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- laravel框架cookie应用到中间件的理解
昨天博主接到一个委托的需求,大数据同事想要在请求日志抓取数据,希望在我的每个页面进行cookie的种植,方便他们进行定位分析,我思考了一下,简单呀,首先考虑的是通过中间件进行cookie种植,但是随后 ...
- 关于appcompat_v7兼容包的详细说明
1.appcompat_v7包的由来? appcompat_v7是Google提供的向下兼容包,是针对API level 7(Android2.1)及以上版本所开发的,其作用是为了让兼容低版本API( ...
- LinkQueue(链队列)
关于Node.h,请参考LinkStack #include"Node.h" template<typename ElemType> class LinkQueue { ...
- 敏捷视界:Scrum起源、Scrum术语
Scrum起源 Scrum的原始含义 Scrum原始含义是指英式橄榄球次要犯规时在犯规地点对阵争球.争球双方各有8个队员参与,各方出3名前锋队员,并肩各站成一横排,面对面躬身互相顶肩,中间形成一条通道 ...