Node.js关于fs,path,http模块

1.首先了解

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 作为一个JavaScript 的运行环境,仅仅提供了基础的功能和 API。然而,基于Node.js 提供的这些基础能,很多强大的工具和框架如雨后春笋,层出不穷,所以学会了 Node.js ,可以让前端程序员胜任更多的工作和岗位。

2.fs模块

fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

node.js  ----fs模块----系统文件操作模块
1.fs.stat  检测是文件还是目录(目录 文件是否存在)
2.fs.mkdir  创建目录 (创建之前先判断是否存在)
3.fs.writeFile  写入文件(文件不存在就创建,但不能创建目录)
4. fs.appendFile 写入追加文件(末尾追加)
5.fs.readFile 读取文件
6.fs.readdir 读取目录
7.fs.rename 重命名
8.fs.rmdir  删除目录

①fs.readFile

fs.readFile(‘参数1’[, ‘参数2’], 参数3)
fs.readFile(“./demo.txt”, “utf-8”, (err, data) => {}
参数1:必选参数,字符串,表示文件的路径。
参数2:可选参数,表示以什么编码格式来读取文件,一般是utf-8编码。
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。

const fs = require('fs');
fs.readFile('./demo1.txt', 'utf-8', (err, dataStr) => {
    
    
if (err) {
    
    
return console.log('读取文件失败', err.message);
}
console.log('读取文件成功', dataStr);
});

②fs.writeFile

fs.writeFile(参数1,参数2[,参数3],参数4)
参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。
参数2:必选参数,表示要写入的内容。
参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。
参数4:必选参数,文件写入完成后的回调函数。

const fs = require('fs');
fs.writeFile('./demo2.txt', '123456', (err) => {
    
    
if (err) {
    
    
return console.log('写入失败', err.message);
}
console.log('写入成功');
});

③fs模块初体验

//1导入fs模块对象
const fs = require("fs");
// node fs.js
// console.log(fs);
//2操作系统文件
//2.1 读取文件内容
fs.readFile("./demo.txt", "utf-8", (err, data) => {
    
    
  // err为null,代表读取成功
  if (err) {
    
    
    console.log("失败");
  } else {
    
    
    console.log("成功" + data);
  }
});
//2.2写入文件内容
const text = "追加";
fs.appendFile("./demo.txt", text, (err) => {
    
    
  if (err) {
    
    
    return console.log("写入失败", err.message);
  }
  console.log("写入成功");
});

//2.3检测当前文件目录是否存在
fs.stat("./files", (err, stats) => {
    
    
  if (err) {
    
    
    // 如果不存在,则创建新的文件目录之后,再写入数据
    fs.mkdir("./files", () => {
    
    
      console.log("创建files文件夹成功");
      newFile();
    });
  } else {
    
    
    newFile();
  }
});

const newFile = () => {
    
    
  fs.appendFile("./files/demo2.txt", text, "utf-8", (err) => {
    
    
    if (!err) {
    
    
      console.log("写入成功!");
    }
  });
};

④fs模块初体验之拼接导入

//1导入fs模块对象
const fs = require("fs");
const path = require("path");
let dataArr = "";
let dataArr2 = "";
fs.readFile("./demo.txt", "utf-8", (err, data) => {
    
    
  dataArr = data.split(" ").join("\r\n");
  fs.readFile("./demo2.txt", "utf-8", (err2, data2) => {
    
    
    data = data + " " + data2;
    dataArr2 = data.split(" ").join("\r\n");
    fs.writeFile("./demo3.txt", dataArr2, (err) => {
    
    });
  });
  // __dirname 当前文件的绝对路径
  const fliePath = path.join(__dirname, "/demo3.txt");
  const fliePath2 = path.basename(__dirname + "/demo3.txt", ".txt");
  const fliePath3 = path.extname(__dirname + "/demo3.txt");

  fs.writeFile(fliePath, dataArr, (err) => {
    
    
    if (!err) {
    
    
      console.log("写入成功!");
    }
  });
  //   dataArr = data.split(" ")
});

3.path模块

path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属
性,用来满足用户对路径的处理

①path.join

path.join([…paths])
…paths 路径片段的序列
返回值:

const path = require('path');
const pathstr = path.join('/a', '/b/c', '../', './d', 'e');
console.log(pathstr); //输出\a\b\d\e
const pathStr2 = path.join(__dirname, './files/demo1.txt ');
console.log(pathStr2); //输出 当前文件所在目录\files\demo1.txt

②path.basename

path 必选参数,表示一个路径的字符串
ext 可选参数,表示文件扩展名
返回: 表示路径中的最后一部分

const path = require('path');
const fpath = '/a/b/c/index.html'; //文件的存放路径
var fullName = path.basename(fpath);
console.log(fullName); //输出index.html
var namewithoutExt = path.basename(fpath, '.html');
console.log(namewithoutExt); //输出index

③path.extname(path)

path 必选参数,表示一个路径的字符串
返回: 返回得到的扩展名字符串

const path = require('path');
const fpath = '/a/b/c/index.html'; //路径字符串
const fext = path.extname(fpath);
console.log(fext); //输出.html

④path模块体验

//1导入fs模块对象
const fs = require("fs");
const path = require("path");
let dataArr = "";
let dataArr2 = "";
fs.readFile("./demo.txt", "utf-8", (err, data) => {
    
    
  dataArr = data.split(" ").join("\r\n");
  fs.readFile("./demo2.txt", "utf-8", (err2, data2) => {
    
    
    data = data + " " + data2;
    dataArr2 = data.split(" ").join("\r\n");
    fs.writeFile("./demo3.txt", dataArr2, (err) => {
    
    });
  });
  // __dirname 当前文件的绝对路径
  const fliePath = path.join(__dirname, "/demo3.txt");
  const fliePath2 = path.basename(__dirname + "/demo3.txt", ".txt");
  const fliePath3 = path.extname(__dirname + "/demo3.txt");

  fs.writeFile(fliePath, dataArr, (err) => {
    
    
    if (!err) {
    
    
      console.log("写入成功!");
    }
  });
  //   dataArr = data.split(" ")
});

4.http模块

http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供
的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务

①http普通使用

//部署node本地服务器
//1.导入http模块
const http = require("http");
// console.log(http);
//2.创建web服务器实例
const server = http.createServer();
//3.为服务器实例绑定request事件,监听客户端请求
//req 客服端请求响应  req.url  req.method
//res 服务端请求响应  res.end()
server.on("request", (req, res) => {
    
    
  console.log("服务器请求");
  //发送的内容包含中文
  const str = `您请求的url地址是 ${
      
      req.url}---请求的 method类型是${
      
      req.method}`;
  //为了防止中文显示乱码的问题,需要设置响应头Content-Type 的值为text / html;charset = utf - 8;
  res.setHeader("Content-Type", "text/html;charset=utf-8");
  //把包含中文的内容,响应给客户端
  res.end(str);
});
//4.启动服务器
server.listen(80, () => {
    
    
  console.log("服务器启动了http://127.0.0.1:80 ");
});

②根据不同的 url 响应不同的 html 内容

// 根据不同的 url 响应不同的 html 内容
// 1.导入http,fs,path模块
const http = require("http");
const fs = require("fs");
const path = require("path");
// 2.创建nodejs服务器实例对象
const server = http.createServer();

// 3.绑定request事件,监听客户请求行为
server.on("request", (req, res) => {
    
    
  // 3.1 获取URL地址
  const url = req.url;
  console.log(url);
  let content = "";
  // 3.3 读取页面数据
  let pageUrl = path.join(__dirname, url);
  // 请求网址: http://127.0.0.1/clock/index.html
  if (url == "/") {
    
    
    pageUrl = path.join(__dirname, "/index.html");
  }
  //  读取clock/index.html页面数据
  fs.readFile(pageUrl, "utf-8", (err, dataStr) => {
    
    
    if (!err) {
    
    
      // 请求成功是响应的页面数据
      res.end(dataStr);
    } else {
    
    
      // 请求失败时响应的页面数据
      console.log("请求失败");
      content = "<h1>404 Not found!</h1>";
      res.end(content);
    }
  });
});

// 4.启动服务器
server.listen(80, () => {
    
    
  console.log("http://127.0.0.1");
});

猜你喜欢

转载自blog.csdn.net/z2000ky/article/details/129322924