node——文件系统

本文深入探讨Node.js环境下的进程与线程概念,详细解析npm包管理命令,重点介绍Node.js中的buffer机制及文件操作API,包括同步与异步文件读写、流式文件处理等关键技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.概念

  1. 进程:为程序的执行提供必备的环境(相当于车间);
  2. 线程:计算机中最小的计算单位,负责执行线程中的环境(相当于工人);
  3. 单线程:一个人做一件事;
  4. 多线程:多个人做同一件事;
  5. 一般而言,多线程的性能比单线程好;
  6. Js 的执行采用单线程;
  7. Node.js:是一个能够在服务端运行的JavaScript的开放源代码,跨平台JavaScript的运行环境;
  8. 申明变量:直接写是局部变量,如 var a=10;因为系统会自动把他写到函数里面,全局变量申明:a=10;
  9. require(“”),参数是引入该文件的文件路径(必须以.或者..开头),引入的文件是对象,不能直接使用,需要变量接收才能继续操作,如:

var md=require("./node01.js");

10.将局部变量暴露给其他js文件,采用exports属性(如:exports.var a=10);

二.npm的命令

  1. npm -v查看npm版本
  2. npm version 查看所有模块的版本
  3. npm search 包名 搜索包
  4. npm install/i 包名 安装包
  5. npm remove/r 包名 移除包
  6. npm install 包名 –save 安装包并添加到包的依赖中
  7. npm install 下载当前项目所依赖的包
  8. npm install  包名 -g(全局安装包—一般都是工具)
  9. 进入某个js文件: cd 路径

三.buffer

1.buffer:

-在客户端和服务器交换数据时,储存二进制数据起缓冲作用;类似于数组;

-buffer的长度不可修改,因为他直接作用于内存上;

 

//将字符串保存在buffer中
//var buf1=Buffer.from("hello node");
//console.log(buf1.toString());
//创建含有10个字节的buffer
var buf2 =Buffer.alloc(10);
buf2[0]=20;
//通过索引操作buffer中的元素
for(var i=0;i<buf2.length-1;i++){
    console.log(buf2[i]);
}
同步文件写入
//fs模块是核心模块,直接引入;
    var fs=require("fs");
    //打开文件
    var fd= fs.openSync("start.txt","w");//同步文件写入,openSync(第一个参数是文件路径,第二个w是可写,r是可读)
    //向文件写入内容
    fs.writeSync(fd,"今天是晴天");
    //关闭标识符
    fs.closeSync(fd);
异步文件写入
/引入fs模块
var fs=require("fs");
//打开文件
fs.open("hello2.txt","w",function(err,fd){
    if(!err){
        //如果没有出错,直接写入内容
        fs.write(fd,"这是异步文件写入的内容",function(err){
            if(!err){
                console.log("写入成功");
            }
        });
        fs.close(fd,function(err){
            if(!err){
                console.log("文件关闭")
            }
        });


    }
})

 

简单文件写入
//引入fs模块
//a是打开文件用于追加, 如果不存在则创建
var fs= require("fs");
fs.writeFile("hello4.txt","恢复鳄梨和夫人",{flag:"a"},function(err){
    if(!err){
        console.log("写入成功");
    }
});
流式文件写入
var fs = require("fs");
//创建流
var ws = fs.createWriteStream("hi.txt");
//监听流的开关
ws.once("open",function(){
    console.log("开");
});
ws.once("open",function(){
    console.log("关");
});
//写入流
ws.write("1");
ws.write("12");
ws.write("123");
ws.end();
流式文件读取
var fs=require("fs");
//创建一个可读流
var rs=fs.createReadStream("01.jpg");
var ws=fs.createWriteStream("a.jpg");
rs.once("open",function(){
    console.log("可读流打开");
});
rs.once("close",function(){
    console.log("关闭");
});
//data事件自动读取可读流,并通过参数data返回
/*rs.on("data",function(data){
    console.log(data);
});*/
//pipe()将可读流读到的数据写入可写流中;
rs.pipe(ws);
简单文件读取
var fs=require("fs");
fs.readFile("C:/Users/荣/Desktop/01.jpg",function(err,data){

    if(!err){
        console.log(data);
    }
});
var fs = require("fs");
//existsSync查询当前路径是否存在,存在则返回true,不存在则返回false
var isexists=fs.existsSync("a.jpg");
console.log(isexists);
var fs = require("fs");
//stat()描述当前文件的信息
//size 文件大小
//isFile()是否是一个文件
//isDirectory是否是一个文件夹
fs.stat( "01.jpg",function(err,stats){
    if(!err){
        console.log(stats.size);
        console.log(stats.isFile());
        console.log(stats.isDirectory());
    }
});
var fs = require("fs");
//unlinkSync()删除该文件
fs.unlinkSync("a.jpg");
fs.unlink("hello.txt",function(){
    console.log("已删除");
});
var fs = require("fs");
//readdir()列出当前路径下的所有文件
 var n =fs.readdirSync(".");
console.log(n);
fs.readdir(".",function(err,file){
    console.log(file);
});
var fs = require("fs");
/*truncateSync();方法截取文件,按字节截取*/
fs.truncateSync("hello2.txt","3");
var fs = require("fs");
//建立文件夹
/*mkdirSync()建立一个文件夹*/
fs.mkdirSync("ha");
//rmdirSync()删除一个文件夹
fs.rmdirSync("ha");
//renameSync();给该文件重命名
fs.renameSync("ha.txt","C:\\Users\\荣\\Desktop\\1013\\he.txt");

//监听文件的变化
fs.watchFile("hello3.txt",function(){
    console.log("文件发生变化");
});

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值