日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

node中的內(nèi)置模塊path和fs

作者:jieyucx 更新時間: 2023-07-26 編程語言

一、path模塊

1. 常用方法介紹

Node中的path模塊是用來操作文件路徑的內(nèi)置模塊,主要用于字符串路徑操作,其有多種用法用來返回不同的路徑信息。

  1. path.join

path.join()方法主要用于連接路徑。該方法的主要作用就是將所有傳入的路徑片段連接在一起,然后規(guī)范化生成的路徑。需要注意的是,在Join操作中’/'會被當(dāng)做根路徑。

例如:

var path = require('path');
var p = path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
console.log(p);  // 輸出: '/foo/bar/baz/asdf'
  1. path.basename

path.basename()方法主要用于獲取路徑中的文件名。在提取文件名的同時,也可以使用選項參數(shù)來去除文件的擴展名。

例如:

var path = require('path');
console.log(path.basename('/foo/bar/baz/asdf/quux.html')); // 輸出: 'quux.html'
console.log(path.basename('/foo/bar/baz/asdf/quux.html', '.html')); // 輸出: 'quux'
  1. path.extname

path.extname()方法主要用于獲取路徑中文件的擴展名。

例如:

var path = require('path');
console.log(path.extname('index.html')); // 輸出: '.html'
console.log(path.extname('index.coffee.md')); // 輸出: '.md'
console.log(path.extname('index.')); // 輸出: '.'
console.log(path.extname('index')); // 輸出: ''
console.log(path.extname('.index')); // 輸出: ''

有了path模塊,我們就可以方便地進(jìn)行文件路徑的操作,對于文件系統(tǒng)的操作無疑提供了很大的便利。只要掌握了各個方法的特點和使用方式,就可以靈活應(yīng)用于實際情況中。

2.__dirname

在Node.js中,__dirname是一個全局變量,它提供了當(dāng)前執(zhí)行腳本所在的目錄的絕對路徑。這個全局變量的值和你在命令行中所在的位置沒有任何關(guān)系,它只和執(zhí)行的node腳本有關(guān)。

__dirname的主要用處是用來構(gòu)建文件或者目錄的路徑。因為無論你的進(jìn)程在哪里運行,__dirname始終被設(shè)置為被執(zhí)行的.js文件所在的文件夾的絕對路徑,這使得它比較可靠和方便。

例如:

假設(shè)你有以下文件結(jié)構(gòu):


- /home/user/project
  - server.js
  - /assets
    - style.css

而你在/home/user/project下運行了一段如下的node.js代碼:

console.log(__dirname);

無論你在哪里執(zhí)行上述命令(例如在項目的父目錄或者系統(tǒng)的根目錄),它都將輸出:“/home/user/project”,因為這就是server.js文件所在的目錄。

同樣,__dirname適合用來動態(tài)地構(gòu)建文件路徑,例如,如果你想在server.js中讀取style.css文件,

var fs = require('fs');
var path = require('path');

fs.readFile(path.join(__dirname, 'assets/style.css'), function(err, data) {
  if (err) {
    throw err;
  }
  console.log(data);
});

上述代碼中,我們使用了path.join()方法,這是因為不同的操作系統(tǒng)文件路徑的分隔符不同,path.join()方法能確保我們總是得到正確的文件路徑。

二、fs模塊

Node.js fs(文件系統(tǒng))模塊可以對系統(tǒng)文件進(jìn)行I/O操作。所有的文件系統(tǒng)操作都提供了異步(非阻塞)和同步(阻塞)兩種形式。

fs模塊提供的API基本上可以分為以下三類:

  • 文件屬性讀寫 API
  • 文件內(nèi)容讀寫 API
  • 目錄操作 API

下面詳細(xì)介紹一下fs.readFile和fs.writeFile的用法:

  1. fs.readFile:這個方法主要是用來讀取文件內(nèi)容的。語法如下:
fs.readFile(path[, options], callback)
  • path - 文件的地址
  • options - 選項,包括 encoding(文件編碼)、flag(文件操作符,默認(rèn) ‘r’)
  • callback - 數(shù)據(jù)回調(diào)函數(shù),參數(shù)為(err, data),err 為錯誤信息,data為讀取到的數(shù)據(jù)

讀取一個文本文件的例子:

const fs = require('fs');
fs.readFile('/path/to/file.txt', 'utf8', function(err, data){
    if (err) throw err;
    console.log(data);
});
  1. fs.writeFile:這個方法主要是用來寫入文件內(nèi)容的。語法如下:
fs.writeFile(file, data[, options], callback)
  • file - 文件路徑
  • data - 要寫入的內(nèi)容,可以是字符串或 Buffer 對象
  • options - 選項,包括 encoding(編碼)、mode(權(quán)限)、flag(操作符)等
  • callback - 回調(diào)函數(shù)

寫入一個文本文件的例子:

const fs = require('fs');
fs.writeFile('/path/to/file.txt', 'Hello World', function(err){
    if (err) throw err;
    console.log('The file has been saved!');
});

在實際開發(fā)場景,假設(shè)我們想輸入特定數(shù)據(jù)到一個log文件,同時也要讀取其內(nèi)容展示到客戶端,這時候我們就可以使用fs模塊。示例代碼如下:

const fs = require('fs');
let contentToWrite = 'Hello, this is a log message!';
let logFilePath = '/path/to/log.txt';

// 寫入 log
fs.writeFile(logFilePath, contentToWrite, function(err){
    if (err) throw err;
    console.log('Log has been written to the file!');
});

// 讀取 log
fs.readFile(logFilePath, 'utf8', function(err, data){
    if (err) throw err;
    console.log('Log Content:', data);
});

三、node中的模塊介紹

可能看到這里,0基礎(chǔ)的小伙伴會有些疑惑,這些path,fs哪來的,怎么引入了就可以直接使用呢?那么接下來就簡單介紹一下node中的模塊

在 Node.js 中,存在三種主要類型的模塊,它們是:

  1. 內(nèi)置核心模塊:這些模塊是與 Node.js 自身一起提供的,不需要額外安裝就可以使用。如 HTTP、path、fs、stream 等。

例如,使用 http 模塊創(chuàng)建 HTTP 服務(wù)器:

const http = require('http');

http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8080);
  1. 本地模塊:這些模塊是由開發(fā)人員自己編寫的,用于組織自身應(yīng)用程序的代碼。它們可以是一組經(jīng)常使用的函數(shù),或者是提供特定功能的對象。

例如,創(chuàng)建一個名為 greeting 的本地模塊,它包含一個函數(shù),用來返回問候語:

// greeting.js
module.exports.sayHello = function(name){
    return "Hello, " + name;
}

在另一個文件中引用和使用它:

// app.js
const greeting = require('./greeting');

console.log(greeting.sayHello("John"));
  1. 第三方模塊:這些模塊是從 npm (Node Package Manager) 倉庫安裝并使用的模塊。這些模塊由社區(qū)開發(fā)人員創(chuàng)建并維護(hù),用于提供在許多應(yīng)用中都會使用到的功能。

例如,安裝并使用 express 模塊來創(chuàng)建一個簡單的 web 服務(wù)器:

// 使用 npm 安裝 express
// npm install express

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

原文鏈接:https://blog.csdn.net/jieyucx/article/details/131608848

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新