系統(tǒng)模塊
1、使用require()引入,但是不需要下載。
一、path()
1、用于處理文件路徑和目錄路徑的。使用方式:
const path = require('path');
http://nodejs.cn/api/path.html#path_path_extname_path
path中的方法:
1、dirname()方法返回 path 的目錄名。使用方式:
path.dirname('/foo/bar/baz/asdf/quux'); // 返回: '/foo/bar/baz/asdf'
2、basename() 方法返回 path 的最后一部分。
path.basename('/foo/bar/baz/asdf/quux.html');// 返回: 'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html'); // 返回: 'quux'
3、extname() 方法返回 path 的擴(kuò)展名,從最后一次出現(xiàn) .(句點(diǎn))字符到 path 最后一部分的字符串結(jié)束;
path.extname('index.html');// 返回: '.html'
path.extname('index.coffee.md');// 返回: '.md'
4、resolve() 方法將路徑或路徑片段的序列解析為絕對路徑。
給定的路徑序列從右到左進(jìn)行處理,每個(gè)后續(xù)的 path 前置,直到構(gòu)造出一個(gè)絕對路徑。 例如,給定的路徑片段序列:/foo、 /bar、 baz,調(diào)用 path.resolve('/foo', '/bar', 'baz') 將返回 /bar/baz。
如果在處理完所有給定的 path 片段之后還未生成絕對路徑,則再加上當(dāng)前工作目錄。
path.resolve('/foo/bar', './baz');// 返回: '/foo/bar/baz'
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 如果當(dāng)前工作目錄是 /home/myself/node,
// 則返回 '/home/myself/node/wwwroot/static_files/gif/image.gif‘’
path.resolve(__dirname,'index.js') // 可以獲取當(dāng)前文件的絕對路徑
二、fs
1、fs(文件系統(tǒng)),用于文件的讀寫操作
http://nodejs.cn/api/fs.html
使用require引入,例:
let fs = requrie('fs');
fs的方法
1、readFile :異步地讀取文件的全部內(nèi)容。
有兩個(gè)參數(shù):fs.readFile(path[, options], callback)
(1)第一個(gè)為:path <string> | <Buffer> | <URL> | <integer> 文件名或文件描述符
(2)第二個(gè)是回調(diào)函數(shù)。調(diào)會傳入兩個(gè)參數(shù) (err, data),其中 err是錯(cuò)誤信息、data 是文件的內(nèi)容就是拿到的數(shù)據(jù)。
fs.readFile('/etc/passwd', (err, data) => {
if (err) throw err;
console.log(data);
});
2、watchFile :異步地將數(shù)據(jù)寫入到一個(gè)文件,如果文件已存在則覆蓋該文件。
fs.writeFile(file, data[, options], callback) 有三個(gè)參數(shù)
(1)第一個(gè)參數(shù): file <string> | <Buffer> | <URL> | <integer> 文件名或文件描述符。
(2)寫入的內(nèi)容,會將現(xiàn)有的覆蓋,添加{flag:"a"},可以不被覆蓋,但是 ???疑問???。 data 可以是字符串或 buffer。
fs.writeFile('b.text','月薪X',{flag:"a"},(err)=>{
if(err) throw err;
console.log(data)
})
(3)如果 options(可選參數(shù)) 是一個(gè)字符串,則它指定字符編碼;例:
fs.writeFile('文件.txt', 'Node.js中文網(wǎng)', 'utf8', callback);
(4)第三個(gè)參數(shù),回調(diào)函數(shù)
3、readFileSync :同步地讀取文件的全部內(nèi)容。
fs.readFileSync(path[, options]) 同步的,沒有回調(diào)函數(shù)
let data = fs.readFileSync('./a.text');
4、fs.writeFileSync :同步將數(shù)據(jù)寫入到一個(gè)文件。(同步的,沒有回調(diào)函數(shù))
fs.writeFile('b.text','月薪X');
疑問:
1、同步異步的區(qū)別沒有體現(xiàn)出來
2、分別對應(yīng)的應(yīng)用場景沒有