欧美亚洲韩国_av电影院在线看_久久久久97_台湾佬中文娱乐网欧美电影

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

nodejs的哪個(gè)模塊可以操作文件

nodejs的“文件系統(tǒng)”模塊可以操作文件。fs(文件系統(tǒng))模塊是nodejs提供的用于訪問(wèn)本地文件系統(tǒng)的功能模塊,使用fs模塊可以實(shí)現(xiàn)文件及目錄的創(chuàng)建,寫入、刪除等操作。

nodejs的哪個(gè)模塊可以操作文件

本教程操作環(huán)境:windows7系統(tǒng)、nodejs 12.19.0版、Dell G3電腦。

一、fs模塊簡(jiǎn)介

1. 基本概念

fs(file system)模塊是nodejs提供的用于訪問(wèn)本地文件系統(tǒng)的功能模塊,它使得運(yùn)行于nodejs環(huán)境下的JavaScript具備直接讀寫本地文件的能力。

fs模塊是nodejs的核心模塊之一,只要安裝了nodejs,就可以直接使用,不需要單獨(dú)安裝。引入fs模塊非常簡(jiǎn)單:

let fs = require('fs');

接下來(lái)就可以調(diào)用fs模塊的相關(guān)接口直接讀寫文件系統(tǒng)。

fs模塊主要提供了以下的接口類:

  • fs.Dir,目錄類。可理解為文件夾。

  • fs.Dirent,目錄項(xiàng)類。通過(guò)Dir類的返回值獲得,表示該目錄下的一個(gè)子項(xiàng),可能是文件或子目錄。

  • fs.FSWatcher,文件監(jiān)聽類,它可以為一個(gè)文件創(chuàng)建一個(gè)監(jiān)聽器,當(dāng)文件變化時(shí)觸發(fā)回調(diào)。

  • fs.StatWatcher,調(diào)用fs.watchFile()方法之后的返回值類型,主要用于協(xié)助控制事件循環(huán)。

  • fs.ReadStream,讀取流。當(dāng)流式讀取文件時(shí)需要使用該類。

  • fs.Stats,文件元信息類。通過(guò)該類可以獲取文件相關(guān)信息(如文件類型、文件大小、文件描述符等)。

  • fs.WriteStream,寫入流。當(dāng)流式寫入數(shù)據(jù)時(shí)需要使用。

除了以上的類,fs模塊還提供了非常多的實(shí)例方法,它們可以直接通過(guò)fs調(diào)用,如讀取文件的方法reafFile

let fs = require('fs');  fs.readFile('./README.md', function(err, data) = {   if (err) throw err;   ... // 處理數(shù)據(jù) })

該函數(shù)以異步的方式讀取文件,以可能拋出的異常作為回調(diào)函數(shù)的第一個(gè)參數(shù)(這樣設(shè)計(jì)的目的是“強(qiáng)制”或者“提醒”開發(fā)者去處理可能出現(xiàn)的異常),而真正的文檔數(shù)據(jù)則作為第二個(gè)參數(shù)。

fs模塊中幾乎所有默認(rèn)的讀寫函數(shù)都是異步的,不過(guò)它也同時(shí)提供了這些函數(shù)的同步版本,一般是在函數(shù)后面加Sync。如上面的代碼還可以用readFileSync改寫:

let fs = require('fs');  try {   let data = fs.readFileSync('./README.md', 'utf8'); } catch(e = {   console.error(e); })

大多數(shù)情況下,nodejs推薦使用異步版本的讀寫函數(shù)來(lái)提升系統(tǒng)性能。而如果要使用同步版本的函數(shù),應(yīng)該盡可能使用try catch捕獲異常,以防止讀寫失敗造成主線程崩潰。

2. 文件路徑

既然是文件系統(tǒng)模塊,就必然要根據(jù)文件路徑找到需要操作的文件。fs模塊支持的路徑類型分為三類:字符串BufferURL對(duì)象

(1). 字符串

字符串類是最常用的路徑類型,包括絕對(duì)路徑相對(duì)路徑。絕對(duì)路徑指的是相對(duì)于文件系統(tǒng)根目錄的路徑,而相對(duì)路徑是相對(duì)于當(dāng)前工作目錄的路徑(即運(yùn)行node命令時(shí)所在的目錄,可以通過(guò)process.cwd()獲取到)。

當(dāng)使用絕對(duì)路徑時(shí),windows和其他操作系統(tǒng)存在一定差異。因?yàn)樵谄渌蠖鄶?shù)操作系統(tǒng)中,驅(qū)動(dòng)器只有唯一的根目錄;而在windows上,則存在多個(gè)獨(dú)立的驅(qū)動(dòng)盤(如C盤、D盤等)。從寫法上來(lái)看,絕對(duì)路徑一般是以/開頭,表示驅(qū)動(dòng)盤的根目錄:

fs.readFile('/README.md', (err, data) => {   ... });

而在windows上,則是以驅(qū)動(dòng)盤開頭的:

fs.readFile('d://nodejs/README.md', (err, data) => {   ... })

我們知道,一般windows都是使用反斜線作為路徑分隔符的。不過(guò)在nodejs中作了兼容,使用斜線或者反斜線都可以正確識(shí)別,因此下面的寫法也是正確的:

fs.readFile('d:\nodejsREADME.md', (err, data) => {   ... })

需要注意的是,當(dāng)使用fs.readdir('c:')讀取C盤目錄時(shí),實(shí)際上讀取的是c:\userxxx這個(gè)用戶根目錄,必須加雙斜線或雙反斜線,才可以讀取到真正的c盤根目錄:fs.readdir('c://')

而相對(duì)路徑則是相對(duì)于當(dāng)前工作目錄的路徑,通常以../(回退到上級(jí)目錄)、./(當(dāng)前目錄)或當(dāng)前路徑下的某個(gè)目錄項(xiàng)開頭。如:

// 當(dāng)前目錄的上一級(jí)目錄下的README.md文件 fs.readFileSync('../README.md');  // 當(dāng)前目錄下nodejs文件夾內(nèi)的README.md fs.readFileSync('./nodejs/README.md'); fs.readFileSync('nodejs/README.md');

./開頭表示當(dāng)前目錄,可以直接省略。

(2). Buffer

Buffer類型的路徑和字符串幾乎沒有差別,只是某些操作系統(tǒng)將文件路徑視為二進(jìn)制字節(jié)序列,因此通常需要用Buffer.from('README.md')的方式將字符串路徑轉(zhuǎn)化為二進(jìn)制字節(jié)序列。由于這類操作系統(tǒng)比較少用,這里不再詳細(xì)介紹。

(3). URL

URL(uniform resource locator,統(tǒng)一資源定位器)是一種通用的資源定位方案,它將任意資源(包括本地文件)都視為網(wǎng)絡(luò)資源,然后以一種統(tǒng)一的方式定位它們。

fs模塊僅支持使用file協(xié)議的URL對(duì)象,該協(xié)議的前綴為file:///,路徑格式如下:

// 在windows下,定位某個(gè)主機(jī)上的文件, // 一般用于讀寫局域網(wǎng)內(nèi)的共享文件夾 fs.readFileSync(new URL('file:///主機(jī)名/README.md'));  // 定位本地資源 fs.readFileSync(new URL('file:///c:/README.md'));

以上兩種寫法都是針對(duì)windows平臺(tái)的,第一種主要用于局域網(wǎng)內(nèi)的共享文件讀取,第二種用于讀寫本地文件。

對(duì)于其他平臺(tái),url的格式如下:

fs.readFileSync(new URL('file:///nodejs/README.md'));

它會(huì)被轉(zhuǎn)化為絕對(duì)路徑:/nodejs/README.md。URL類型的路徑不支持相對(duì)路徑。

二、fs模塊的常用類

鑒于fs模塊的接口數(shù)量較為龐大,這里暫不一一探討,如果感興趣,請(qǐng)參考 nodejs中文網(wǎng) – fs模塊。本文主要是介紹以下幾個(gè)接口類中較為常用的一些api,基本上可以滿足大部分文件系統(tǒng)操作的需求:

  • fs.Dir

  • fs.Dirent

  • fs.ReadStream

  • fs.Stats

  • fs.WriteStream

1. fs.Dir(v12.12)

這是fs模塊對(duì)目錄(或稱為文件夾)的抽象類。調(diào)用fs.opendir()fs.opendirSync()fsPromises.opendir()這三個(gè)方法時(shí)會(huì)返回一個(gè)Dir類型的對(duì)象,用于操作打開后的目錄。

比如我們要遍歷當(dāng)前文件夾下的所有子目錄及文件,可以用下面的代碼(v12.12以上版本可用):

async function getChild (path) {   // 讀取目錄子項(xiàng),返回一個(gè)promise   let dir = await fs.promises.opendir(path);    for await (let dirent of dir) {     console.log(dirent.name);   }}

關(guān)閉目錄有三個(gè)方法:dir.close()dir.close(callback)dir.closeSync()

dir.close()返回的是一個(gè)promise,向其注冊(cè)then方法可以在目錄關(guān)閉后執(zhí)行回調(diào)函數(shù),如dir.close().then((e) => { ... })dir.close(callback)是關(guān)閉目錄的異步方法,直接傳入回調(diào)函數(shù),它會(huì)在文件關(guān)閉后調(diào)用;dir.closeSync()是關(guān)閉目錄的同步方法,只有目錄成功關(guān)閉后才會(huì)執(zhí)行后續(xù)代碼。

dir.path的值為當(dāng)前目錄的路徑,即調(diào)用opendir方法時(shí)傳入的路徑。

讀取該目錄的目錄項(xiàng)的三個(gè)方法為:dir.read()dir.read(callback)dir.readSync()

dir.read()返回的是一個(gè)promise數(shù)組或null,分別負(fù)責(zé)讀取每一個(gè)目錄項(xiàng),主要用于async函數(shù)遍歷:

async function read (path) {   let dir = await fs.promises.opendir(path);   for await (let dirent of dir.read()){     ...   }}

dir.read(callback)則是讀取目錄項(xiàng)的異步版本,每次讀取到一個(gè)子項(xiàng),就會(huì)調(diào)用一次callback;dir.readSync()是讀取目錄項(xiàng)的同步版本,返回的是Dirent類型的數(shù)組或null。

2. fs.Dirent(v10.10)

目錄項(xiàng)類。當(dāng)通過(guò)fs.opendir()方法讀取一個(gè)目錄時(shí),它的每一個(gè)子項(xiàng)就是一個(gè)Dirent類對(duì)象,每個(gè)Dirent對(duì)象可能是一個(gè)子目錄,或者是一個(gè)文件。每個(gè)Dirent對(duì)象都是文件名和文件類型組成的。

fs.Dirent提供的方法主要是用于判斷目錄項(xiàng)類型:

  • dirent.isBlockDevice(),是否為塊設(shè)備。

  • dirent.isCharacterDevice(),是否為字符設(shè)備。

  • dirent.isDirectory(),是否為系統(tǒng)目錄。

  • dirent.isFIFO(),是否為先入先出通道。

  • dirent.isFile(),是否為普通文件。

  • dirent.isSocket(),是否為套接字。

  • dirent.isSymbolicLink(),是否為符號(hào)鏈接,即快捷方式。

另外,dirent.name的值為目錄項(xiàng)的名字。

3. fs.ReadStream

讀取流類,用于流式讀取文件。該類由fs.createReadStream()創(chuàng)建并返回。

fs.ReadStream支持三個(gè)事件:

  • close,讀取流關(guān)閉事件。

  • open,讀取流打開事件。

  • ready,讀取流就緒事件,在open事件發(fā)生后立即觸發(fā)。

回調(diào)函數(shù)接收文件描述符fd作為參數(shù),用于對(duì)文件的后續(xù)操作。

fs.ReadStream實(shí)例有三個(gè)實(shí)例屬性:

  • readStream.bytesRead,已讀取的字節(jié)數(shù)。

  • readStream.path,文件路徑。

  • readStream.pending,文件是否就緒(ready事件發(fā)生前,該值為true,發(fā)生后變?yōu)閒alse)。

4. fs.Stats

提供對(duì)文件信息的描述。調(diào)用fs.stat()fs.lstat()fs.fstat()會(huì)返回該類型的對(duì)象。

一個(gè)fs.Stats實(shí)例包含以下屬性:

Stats {   dev: 2114,  // 設(shè)備的數(shù)字標(biāo)識(shí)符   ino: 48064969,  // 設(shè)備的索引號(hào)   mode: 33188,  // 文件類型和模式   nlink: 1,  // 文件的硬鏈接數(shù)   uid: 85,  // 該文件擁有者的標(biāo)識(shí)符   gid: 100,  // 擁有該文件的群組的標(biāo)識(shí)符   rdev: 0,  // 數(shù)字型設(shè)備表標(biāo)識(shí)符   size: 527,  // 文件大小,單位為字節(jié)   blksize: 4096,  // 文件系統(tǒng)塊的大小   blocks: 8,  // 文件系統(tǒng)為當(dāng)前文件分配的塊數(shù)   atimeMs: 1318289051000.1,  // 上次被訪問(wèn)時(shí)間   mtimeMs: 1318289051000.1,  // 上次被修改的時(shí)間   ctimeMs: 1318289051000.1,  // 上次更改文件狀態(tài)的時(shí)間   birthtimeMs: 1318289051000.1,  // 文件的創(chuàng)建時(shí)間   atime: Mon, 10 Oct 2011 23:24:11 GMT,  // 以上四個(gè)時(shí)間的另一種格式   mtime: Mon, 10 Oct 2011 23:24:11 GMT,   ctime: Mon, 10 Oct 2011 23:24:11 GMT,   birthtime: Mon, 10 Oct 2011 23:24:11 GMT    }

每個(gè)Stats對(duì)象還可以返回一個(gè)bigint類型的結(jié)果,它的每個(gè)結(jié)果都是bigint類型,而不是上面的number類型,這里不再詳述。

同時(shí),它還有與Dirent相同的7個(gè)實(shí)例方法,來(lái)判斷當(dāng)前的設(shè)備類型,請(qǐng)參考上述Dirent

5. fs.WriteStream

寫入流類,用于流式地寫入數(shù)據(jù)。它由fs.createWriteStream()創(chuàng)建和返回。

fs.ReadStream類似,它也有closeopenready三個(gè)事件,兩者的用法也是一樣的。

每個(gè)WriteStream實(shí)例也都有三個(gè)實(shí)例屬性:writeStream.bytesWrittenwriteStream.pathwriteStream.pending,分別表示當(dāng)前已寫入的字節(jié)數(shù)、寫入流文件路徑和是否已就緒,與ReadStream也是類似的。

三、fs模塊的常用方法

fs模塊提供了很多讀寫文件系統(tǒng)資源的函數(shù),上一部分介紹的類主要是對(duì)這些函數(shù)操作結(jié)果的封裝。下面來(lái)介紹一些常用的方法:

1. fs.access(path [,mode], callback)

檢查文件的可用性。

第一個(gè)參數(shù)path為文件路徑,可以是字符串、Buffer或URL類型;
第二個(gè)參數(shù)為要檢查的類型,可能的值包括fs.constants.F_OK(是否存在,默認(rèn)值)、fs.constants.R_OK(是否可讀)和fs.constants.W_OK(是否可寫);
第三個(gè)參數(shù)為回調(diào)函數(shù),如果檢查失敗,則會(huì)傳入一個(gè)Error對(duì)象,否則會(huì)傳入undefined。

比如我們需要檢查當(dāng)前文件夾下是否存在package.json,可以這樣寫:

fs.access('package.json', fs.constants.F_OK, (err) => {   if (err) {     ... // 文件存在   } else {     ... // 文件不存在   }})

一般來(lái)說(shuō),不應(yīng)該在檢查文件可用性之后立即讀寫文件,因?yàn)閺臋z查文件可用性到實(shí)際讀寫文件的過(guò)程中,該文件的狀態(tài)可能發(fā)生變化(比如其他進(jìn)程操作了該文件),這會(huì)導(dǎo)致文件可用性檢查失效。因此fs.access方法通常只用來(lái)檢查文件的可用性,而要讀寫文件的話,可以直接調(diào)用讀寫文件的方法,再根據(jù)回調(diào)函數(shù)接收到的可能的異常來(lái)判斷該文件是否可用。

該方法還有一個(gè)同步版本:fs.accessSync(path [,mode]),前兩個(gè)參數(shù)與異步版本是一致的。當(dāng)文件檢查成功時(shí),該方法返回undefined,否則將拋出異常,用法如下:

try {   fs.accessSync('package.json', fs.constants.R_OK | fs.constants.W_OK);   console.log('可以讀寫');   } catch (err) {   console.error('無(wú)權(quán)訪問(wèn)');   }

2. fs.appendFile(path, data[, options], callback)

向文件中追加數(shù)據(jù)。

path支持字符串、Buffer和URL類型;
data為要追加的數(shù)據(jù),可以是字符串或Buffer實(shí)例;
options為配置對(duì)象,包含三個(gè)參數(shù):

  • encoding,編碼方式,默認(rèn)為utf8

  • mode,模式,默認(rèn)為0o666。該參數(shù)為文件的權(quán)限描述,0o666表示為每個(gè)用戶擁有讀寫權(quán)限。

  • flag,文件操作方式,默認(rèn)為a,即追加。

callback為函數(shù)執(zhí)行完畢的回調(diào)函數(shù),如果追加失敗,則第一個(gè)參數(shù)為錯(cuò)誤對(duì)象,否則為undefined。例子如下:

fs.appendFile('README.md', '這是要添加的數(shù)據(jù)', (err) => {   if (err) {     console.log('數(shù)據(jù)追加失敗');   } else {     console.log('數(shù)據(jù)追加成功');   }})

該方法的同步版本為fs.appendFileSync(path, data[, options])。與accessSync一樣,它也只是移除了最后一個(gè)參數(shù)callback,通過(guò)返回值來(lái)判斷操作結(jié)果,這里不再重復(fù)舉例。

3. fs.chmod(path, mode, callback)

修改文件的權(quán)限。

文件系統(tǒng)中每個(gè)文件都有讀、寫和執(zhí)行三個(gè)權(quán)限,用r、w和x表示。其中r的權(quán)重為4,w的權(quán)重為2,x的權(quán)重為1,即當(dāng)用戶擁有讀權(quán)限時(shí),權(quán)限值加4,擁有寫權(quán)限時(shí)權(quán)限值加2,擁有執(zhí)行權(quán)限時(shí)權(quán)限值加1。

權(quán)限類型 權(quán)重
讀權(quán)限 4
寫權(quán)限 2
執(zhí)行權(quán)限 1

這種權(quán)重分配使得任何一種權(quán)限擁有情況的權(quán)限值都是不同的,因此只需要一個(gè)八進(jìn)制數(shù)字就可以表示某個(gè)用戶對(duì)某個(gè)文件擁有哪些權(quán)限。

比如某個(gè)用戶擁有對(duì)某個(gè)文件的讀寫權(quán)限,而沒有執(zhí)行權(quán)限,則他的權(quán)限值為4 + 2 + 0 = 6。而如果同時(shí)擁有這三個(gè)權(quán)限,則權(quán)限值為4 + 2 + 1 = 7

對(duì)一個(gè)文件而言,系統(tǒng)中存在三類用戶:文件的擁有者、擁有該文件的用戶組和其他用戶。文件系統(tǒng)使用三個(gè)八進(jìn)制數(shù)字,來(lái)表示這三類用戶對(duì)某個(gè)文件的權(quán)限。比如當(dāng)某個(gè)文件的權(quán)限值為0o761時(shí),它表示:

  • 文件的擁有者具備讀、寫和執(zhí)行權(quán)限:7 = 4 + 2 + 1

  • 文件所屬的用戶組成員具備讀寫權(quán)限:6 = 4 + 2 + 0

  • 其他成員只具備執(zhí)行權(quán)限:1 = 0 + 0 + 1

fs.chmod方法就是用來(lái)修改某個(gè)文件權(quán)限的。它可以傳入三個(gè)參數(shù),分別是文件路徑、權(quán)限值和回調(diào)函數(shù)。權(quán)限值就是上面所講的三個(gè)八進(jìn)制數(shù)字,如0o761;如果修改失敗,則回調(diào)函數(shù)接收異常對(duì)象,否則沒有參數(shù)。

該方法的同步版本為fs.chmodeSync(path, mode),用法與其他同步方法一致。

4. fs.chown(path, uid, gid, callback)

修改文件的擁有者。

第一個(gè)參數(shù)為文件路徑;第二個(gè)參數(shù)為新的文件擁有者的用戶標(biāo)識(shí)符;第三個(gè)參數(shù)為該文件所屬的用戶組的標(biāo)識(shí)符,最后一個(gè)參數(shù)為執(zhí)行完畢后的回調(diào)函數(shù)。

uid和gid都是number類型,是文件系統(tǒng)為每個(gè)用戶和用戶組分配的唯一id,callback則會(huì)在操作失敗時(shí)得到一個(gè)錯(cuò)誤對(duì)象。

該方法的同步版本為fs.chownSync(path, uid, gid),使用方法與其他同步方法一致。

5. fs.close(fd, callback)

異步地關(guān)閉一個(gè)文件。

第一個(gè)參數(shù)fd是調(diào)用fs.open打開一個(gè)文件時(shí),文件系統(tǒng)為該文件分配的一個(gè)數(shù)字類型的文件描述符;當(dāng)文件關(guān)閉失敗時(shí),callback會(huì)得到一個(gè)異常對(duì)象。如:

fs.open('README.md', 'a', (err, fd) => {   ...   fs.close(fd, (err) => {     if (err) {}  // 關(guān)閉失敗   });   })

該方法的異步版本為fs.closeSync(fd)

6. fs.constants

fs模塊提供的常量,參見fs常量。

7. fs.copyFile(src, dest[, mode], callback)

拷貝一個(gè)文件。

第一個(gè)參數(shù)src為拷貝源的地址,數(shù)據(jù)類型與path一致;
第二個(gè)參數(shù)dest為目標(biāo)地址,數(shù)據(jù)類型也與path一致;
第三個(gè)可選參數(shù)為拷貝參數(shù),默認(rèn)情況下,將創(chuàng)建或覆蓋(文件已存在時(shí))目標(biāo)文件。除了這個(gè)默認(rèn)值,還有以下三個(gè)可選值:

  • fs.constants.COPYFILE_EXCL – 如果 dest 已存在,則拷貝操作將失敗。

  • fs.constants.COPYFILE_FICLONE – 拷貝操作將嘗試創(chuàng)建寫時(shí)拷貝(copy-on-write)鏈接。如果平臺(tái)不支持寫時(shí)拷貝,則使用后備的拷貝機(jī)制。

  • fs.constants.COPYFILE_FICLONE_FORCE – 拷貝操作將嘗試創(chuàng)建寫時(shí)拷貝鏈接。如果平臺(tái)不支持寫時(shí)拷貝,則拷貝操作將失敗。

第四個(gè)參數(shù)為為執(zhí)行之后回調(diào)函數(shù),與其他異步函數(shù)一致,它也會(huì)在失敗時(shí)接收到一個(gè)異常對(duì)象。

它的同步版本為fs.copyFileSync(src, dest[, mode])

8. fs.createReadStream(path[, options])

創(chuàng)建一個(gè)讀取流。常見用法為:

let fs = require('fs'); let rs = fs.createReadStream('./1.txt',{     highWaterMark:3, //文件一次讀多少字節(jié),默認(rèn) 64*1024     flags:'r', //默認(rèn) 'r'     autoClose:true, //默認(rèn)讀取完畢后自動(dòng)關(guān)閉     start:0, //讀取文件開始位置     end:3, //流是閉合區(qū)間 包含start也含end     encoding:'utf8' //默認(rèn)null }); rs.on("open",()=>{    console.log("文件打開") }); // 自動(dòng)觸發(fā)data事件 直到讀取完畢 rs.on('data',(data)=>{     console.log(data); });

9. fs.createWriteStream(path[, options])

創(chuàng)建一個(gè)寫入流。常見用法為:

const fs=require('fs'); const path=require('path'); let writeStream=fs.createWriteStream('./test/b.js',{encoding:'utf8'});  //讀取文件發(fā)生錯(cuò)誤事件 writeStream.on('error', (err) => {     console.log('發(fā)生異常:', err); }); //已打開要寫入的文件事件 writeStream.on('open', (fd) => {     console.log('文件已打開:', fd); }); //文件寫入完成事件 writeStream.on('finish', () => {     console.log('寫入已完成..');     console.log('讀取文件內(nèi)容:', fs.readFileSync('./test/b.js', 'utf8')); //打印寫入的內(nèi)容     console.log(writeStream); });   //文件關(guān)閉事件 writeStream.on('close', () => {     console.log('文件已關(guān)閉!'); });   writeStream.write('這是我要做的測(cè)試內(nèi)容'); writeStream.end();

10. 基于文件描述符的一組函數(shù)

fs.fchown(fd, callback)fs.fchmod(fd, callbakc)等,它是將第一個(gè)參數(shù)從path替換為了文件對(duì)應(yīng)的文件描述符,使用這類方法之前需要先通過(guò)fs.open`打開文件,獲取文件描述符。這里不再詳述。

11. fs.mkdir(path[, options], callback)

創(chuàng)建一個(gè)目錄(即文件夾)。

第一個(gè)參數(shù)path為要?jiǎng)?chuàng)建文件夾的路徑;
第二個(gè)參數(shù)options支持兩個(gè)參數(shù):

  • recursive,是否遞歸創(chuàng)建父目錄,默認(rèn)為false。

  • mode,創(chuàng)建的文件夾的權(quán)限,默認(rèn)是0o777。

第三個(gè)參數(shù)為執(zhí)行完畢的回調(diào)函數(shù),它的第一個(gè)參數(shù)為可能的異常對(duì)象,當(dāng)recursivetrue時(shí),它還會(huì)得到一個(gè)path參數(shù),值為當(dāng)前操作創(chuàng)建的第一個(gè)目錄。

而當(dāng)要?jiǎng)?chuàng)建的目錄已經(jīng)存在時(shí),如果recursive為false,則會(huì)拋出異常,否則不會(huì)執(zhí)行任何操作。

創(chuàng)建目錄的用法如下:

fs.mkdir('nodejs/lib', {recursive: true}, (err, path) => {   ...})

該代碼試圖在當(dāng)前路徑下的nodejs文件夾內(nèi)創(chuàng)建lib文件夾,并且要遞歸地創(chuàng)建父目錄。即假如當(dāng)前目錄下沒有nodejs文件夾,則先創(chuàng)建它。創(chuàng)建完成后,如果nodejs文件夾是新創(chuàng)建的,則path就是它的路徑;如果nodejs已經(jīng)存在了,則path是新創(chuàng)建的lib文件夾的路徑。

該方法的同步版本為fs.mkdirSync(path[, options])

12. fs.open(path[, flags[, mode]], callback)

打開一個(gè)文件。

第一個(gè)參數(shù)為要打開的文件的路徑;
第二個(gè)參數(shù)為打開方式,如r(只讀),w(只寫),a(追加)等;
第三個(gè)參數(shù)為文件權(quán)限,默認(rèn)為0o666(讀寫權(quán)限);
最后一個(gè)參數(shù)為回調(diào)函數(shù),它有兩個(gè)參數(shù),第一個(gè)為可能拋出的異常對(duì)象,第二個(gè)是文件系統(tǒng)為被打開的文件分配的數(shù)值類型的文件描述符fd
如:

fs.open('README.md', 'r', (err, fd) => {   ...   fs.close(fd, (err) => {})})

它的同步版本為fs.openSync(path[, flags[, mode]])

13. fs.opendir(path[, options], callback)

打開一個(gè)目錄。

第一個(gè)參數(shù)為目錄的路徑;
第二個(gè)參數(shù)包含兩個(gè)參數(shù):

  • encoding,編碼類型,默認(rèn)utf8

  • bufferSize,操作該目錄時(shí)要緩沖的目錄項(xiàng)的數(shù)量,默認(rèn)值32,值越大則性能越好,但內(nèi)存消耗會(huì)更大

第三個(gè)參數(shù)為callback,即打開目錄后的回調(diào)函數(shù)。該回調(diào)函數(shù)可接受兩個(gè)值,一個(gè)是可能的異常對(duì)象,另一個(gè)是打開的目錄對(duì)象,類型為fs.Dir

它的同步版本為fs.opendirSync(path[, options])

14. fs.readFile(path[, options], callback)

異步地讀取文件數(shù)據(jù)。

該方法會(huì)默認(rèn)先用fs.open打開文件,并在讀取完畢后自動(dòng)關(guān)閉文件。因此調(diào)用該方法不需要手動(dòng)打開和關(guān)閉文件,不過(guò)如果需要頻繁地操作文件,則該方法會(huì)導(dǎo)致文件被反復(fù)打開和關(guān)閉,造成性能下降。

path除了可以是文件路徑外,還可以是文件描述符。如果傳入的是文件描述符,則默認(rèn)在讀取完畢后不會(huì)關(guān)閉文件,并且后續(xù)的讀取會(huì)接著上次讀取的位置繼續(xù)向后。

options支持以下兩個(gè)參數(shù):

  • encoding,編碼格式,默認(rèn)為null,實(shí)際使用時(shí)一般傳入'utf8'

  • flag,讀取方式,默認(rèn)為只讀r

如果只需要指定編碼格式,options還可以是一個(gè)字符串,如'utf8'

回調(diào)函數(shù)的第一個(gè)參數(shù)為可能的異常對(duì)象,第二個(gè)參數(shù)則是從文件中讀出的數(shù)據(jù),可能的數(shù)據(jù)類型為字符串或Buffer。如

fs.readFile('README.md', 'utf8', (err, data) => {   if (err) { console.log('讀取失敗'); }   else {     console.log(data);   }})

該方法的同步版本為fs.readFileSync(path[, options])

另外該方法還有一個(gè)可替代方法,fs.read,請(qǐng)參考fs.read。它是在使用fs.open打開文件時(shí)通用的讀取文件的方法,對(duì)讀取過(guò)程的控制粒度更細(xì)。在對(duì)同一個(gè)文件進(jìn)行頻繁的讀取操作,一般使用該方法。

15. fs.rename(oldPath, newPath, callback)

將oldPath指定的文件重命名為newPath指定的文件,如果該文件已存在,則覆蓋它。

回調(diào)函數(shù)只接收可能拋出的異常對(duì)象。

它的同步版本為fs.renameSync(oldPath, newPath)

16. fs.stat(path[, options], callback)

獲取某個(gè)文件的詳細(xì)信息。

fs.stat('README.md', {bigint: true}, function(err, stats) {   console.log(stats.isDirectory());   console.log(stats);   });

options僅支持bigint這一個(gè)參數(shù),表示返回的stats對(duì)象是bigint類型,而不是通常的number類型。以上操作的結(jié)果請(qǐng)參考fs.Stats類。

它的同步版本為fs.statSync(path[, options], callback)

17. fs.writeFile(file, data[, options], callback)

類似于fs.readFile,該方法為文件的寫方法。

file參數(shù)為要寫入的文件路徑,或文件描述符。
data為要寫入的數(shù)據(jù),支持<string> 、 <Buffer> 、 <TypedArray> 、<DataView>等。
options支持三個(gè)參數(shù):encoding,默認(rèn)值’utf8’;mode,權(quán)限類型,默認(rèn)值0o666;flag,打開方式,默認(rèn)值w。

回調(diào)函數(shù)僅支持一個(gè)參數(shù),即可能拋出的異常對(duì)象。

該方法的同步版本為fs.writeFileSync(file, data[, options])

當(dāng)使用fs.open打開一個(gè)文件時(shí),一般使用fs.write進(jìn)行數(shù)據(jù)寫入,請(qǐng)參考fs.write。該方法可以精確地控制寫入位置,并且可以連續(xù)寫入數(shù)據(jù)。

總結(jié)

以上所列舉的只是fs模塊中較為常用的一些api,官方文檔中還有很多其他用途的接口,感興趣的請(qǐng)參考nodejs中文網(wǎng) – fs模塊。

如果需要在async函數(shù)中使用上述api,可以調(diào)用fs模塊提供的promise封裝版本,如:

let fsPromises = require('fs').promises; // 或let fsPromises = require('fs/promises'); // 或let fs = require('fs'); let fsPromises = fs.promises;  fsPromise.readFile().then((err, data) => {   ... })  async function print (path) {   try {     let data = await fsPromise.readFile(path, 'utf8');     console.log(data); // 讀取成功,輸出data   } catch (e => {     ...  // 讀取失敗   }) }

【推薦學(xué)習(xí):《nodejs 教程》】

贊(1)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
主站蜘蛛池模板: 亚洲综合在线免费 | 伊人中文字幕在线观看 | 成人精品视频一区二区三区尤物 | 黄色特级大片 | 高清视频一区二区三区 | 中文字幕av影院 | wwwwwwxxxxxx69 | 和漂亮岳做爰3中文字幕 | 亚洲少妇中文字幕 | 中文字幕在线视频第一页 | 国产亚洲视频在线观看 | 超碰997| 免费看成人毛片 | aa级黄色片 | 成人网视频 | 久久a视频 | 狠狠涩| 国产免费二区 | 久久久三级 | 国产aa| 欧美国产片 | 国产精品精 | 免费污污视频在线观看 | 好爽又高潮了毛片 | 久久久精品国产99久久精品麻追 | 亚洲午夜免费 | 日韩一级生活片 | 91视频分类 | 免费中文字幕日韩欧美 | 三级免费网址 | 欧美三级成人理伦 | 91网页入口| 久久久久久97| 男人的天堂欧美 | 精品3p | 中文字幕日韩一区 | 日本黄色片一级 | 在线观看免费高清视频 | 久久私人影院 | 国产在线激情视频 | 99爱视频 | 欧美日韩亚| 日韩在线观看你懂的 | 艹男人的日日夜夜 | 色94色欧美sute亚洲线路二 | 国产情侣一区 | 亚洲欧美丝袜精品久久久 | 性农村xxxxx小树林 | 在线观看一区视频 | 欧美成人免费观看视频 | 找国产毛片看 | 中文久久久| 久久中文字 | 黄色片视频网站 | 国产特黄aaa大片免费观看 | 久久网免费视频 | 淫僧荡尼巨乳(h)小说 | 日韩视频在线一区二区 | 亚洲国产一区二 | 男人的天堂欧美 | 在线播放精品视频 | 欧美精品福利视频 | 亚洲免费网站观看视频 | 欧美精品网址 | 在线只有精品 | 亚洲一卡二卡三卡 | 久国产精品 | 久久99精品一区二区三区 | 你懂的在线观看网站 | 久久精品一区二区三区四区 | 欧美激情国产精品免费 | 国产乱论 | 天天视频入口 | 波多野结衣日韩 | 午夜精品久久久久久久 | 一级美女视频 | 性午夜 | 香蕉视频亚洲一级 | 尤物yw午夜国产精品视频明星 | 亚洲一级黄色片 | 男女在线免费观看 | 成人免费在线视频网站 | 激情欧美一区二区免费视频 | 亚洲国产97在线精品一区 | 一级性感毛片 | 伊人91视频| gogo午夜高清免费摄影 | 国产一区黄色 | 日韩精品色 | 人人插人人插 | 中国肥胖女人真人毛片 | 国产自产 | 中文在线天堂网 | 亚洲成年人网站在线观看 | 欧洲av一区 | 男女一进一出视频 | 欧美日韩亚洲一区二区 | 日日干夜夜干 | 亚洲在线国产 | 国产午夜精品久久久久 | 99riav在线 | 九九爱国产 | 精品一区二区三区免费视频 | 欧美激情一区在线 | 成人午夜激情视频 | av网站在线免费观看 | 日本特级a一片免费观看 | 最新日韩视频 | 黑人巨大精品欧美一区二区免费 | 国产精品毛片一区二区在线看舒淇 | 久操视频免费在线观看 | 午夜影院在线观看18 | 欧美色综合色 | 在线视频欧美亚洲 | 激情文学影院 | 欧美精品乱码视频一二专区 | 日日夜夜国产 | 男人天堂五月天 | 国产乱码精品一区二区三区精东 | 97射射| 成人日b视频 | 亚洲精品大片 | 深爱五月网 | 69亚洲乱人伦 | 日本三级精品 | gogo午夜高清免费摄影 | 一级黄色片在线观看 | 天堂在线观看av | 中文字幕在线观看第二页 | 一级欧美一级日韩 | 视频二区在线 | 91久久极品少妇xxxxⅹ软件 | 久久狠狠爱| 最新中文字幕视频 | 欧美综合一区二区 | 337p粉嫩大胆噜噜噜的背景 | 精品久久视频 | 亚洲爽爽 | 白浆导航 | 欧美日韩亚洲在线观看 | 志在出位国语完整在线观看 | 在线观看国产黄色 | 91超碰免费 | 中文字幕第6页 | 色婷久久 | 色狠狠综合网 | 欧美色999 | 国产91小视频 | 亚洲国产精品久久人人爱潘金莲 | 日本xxxx在线观看 | 午夜国产一级一片 | 一区二区视频在线 | 有码在线视频 | 亚洲黄色av| 一级片一级片一级片一级片 | h片在线观看免费 | 午夜精品一区二区三区在线观看 | 亚洲午夜免费视频 | 日日夜夜操av | 亚洲国产精品区 | 欧美老肥妇做.爰bbww视频 | 国产www性 | 男人插女人视频网站 | 偷偷操不一样的99 | 日韩色图视频 | 一本大道综合伊人精品热热 | 三级视频网站 | 一色道久久88加勒比一 | 国产精品3 | 亚洲www视频 | 日韩毛片在线观看 | 国产精品一区二区久久 | 精品香蕉一区二区三区 | 操一操 | 亚洲精品乱码久久久久久蜜桃图片 | 龚玥菲一级淫片 | 碰碰久久| 白白色免费在线视频 | 天天添天天射 | 日本黄色短片 | 欧美三级视频在线 | 亚洲成人精品久久 | av在线视屏 | 麻豆国产一区二区三区四区 | 午夜寂寞视频 | 爱情岛论坛永久入口 | 在线毛片网站 | 九色porn蝌蚪 | 亚洲天堂导航 | 色七七久久 | 香蕉亚洲| av+在线播放在线播放 | 亚洲欧美黄色片 | 色婷久久 | 成人黄色视屏 | 天堂中文在线播放 | 亚洲天堂激情 | 亚洲国产一二三 | 中文字幕色图 | 午夜av一区| 日韩精品一区二区三区免费视频 | 91国产大片| 奇米影视播放器 | 亚洲天堂一 | 欧美精品久久久久久久多人混战 | 午夜精品av | 久久久夜夜夜 | 国产亚洲精品久久久久久移动网络 | 国产精品资源在线观看 | 日韩欧美黄色片 | 久久精品欧美日韩精品 | 亚洲v日本 | 在线免费观看国产视频 | 中文字幕成人av | 91精品国产91久久久 | 久久午夜鲁丝片午夜精品 | 黑人干亚洲女人 | 激情综合五月 | 久久久黄色网 | 亚洲一级黄色片 | 九月丁香婷婷 | 国产100页 | 亚洲高清视频在线播放 | 国产女主播在线一区二区 | 在线观看av不卡 | 久久综合精品视频 | 亚洲欧美在线另类 | 亚洲性色av | 欧美人成在线 | 亚洲精品9999| 91欧美激情一区二区三区 | 国产成人在线一区 | 精品成人在线 | 久久精品视频在线免费观看 | 香蕉视频黄色在线观看 | 朝桐光在线播放 | 中文字幕 亚洲一区 | 亚洲第一黄 | 18p在线观看| 婷婷色吧 | 日韩欧美国产亚洲 | 天天干天天干天天干 | 欧美精品五区 | 免费视频www在线观看网站 | 玖玖在线资源 | 久久久久99精品 | 久久久久久日产精品 | 日韩有码在线观看 | 亚洲精品中文字幕在线观看 | 天堂网一区 | 日韩视频免费看 | 亚洲性生活大片 | 91看黄| 欧美日韩激情一区二区 | 古装三级吃奶做爰 | 欧美日韩在线视频免费 | 成年人免费在线视频 | 天天干天天做天天操 | 99热免费 | 中文天堂av | 婷婷精品视频 | av男人资源| 波多野结衣三级视频 | 成人网色| 欧美一a一片一级一片 | 亚洲日本一区二区三区 | 欧美精品免费一区二区三区 | 黑人一级片 | 久草a在线 | 成人久久大片91含羞草 | 天天操天 | 91干| 亚洲精品日韩在线 | 99re在线精品视频 | 欧美日韩在线视频免费观看 | 豆国产97在线 | 亚洲 | 久久黄视频 | 91免费看片播放器 | 免费一级淫片 | 影音先锋婷婷 | 欧美精品在线一区二区 | 国产九一精品 | 少妇高潮久久久久久潘金莲 | 久久大尺度 | 日韩一卡二卡在线 | 久久成人黄色 | www.日本在线观看 | 日韩午夜在线观看 | 亚洲一级在线播放 | 看全色黄大色黄大片女一次牛 | 欧美精品一区二区视频 | 国产精品资源在线 | 性爱视频免费 | 精品久久一区二区 | 91av视频| 日本黄色片一级 | 成人在线观看网 | 国产精品初高中害羞小美女文 | 91免费版视频| 欧洲综合视频 | 中文字幕成人在线观看 | 9i精品福利一区二区三区 | 91超碰在线播放 | 欧美黑人三级 | 中文字幕免费一区 | 日韩高清中文字幕 | 久久久久亚洲av毛片大全 | 综合在线国产 | 一区二区久久久久 | 亚洲国产午夜 | 91成年影院 | 视频在线国产 | 国产aa大片 | 成人午夜视频在线观看 | 射黄视频 | 国产精品成人国产乱 | 国产特级乱淫免费看 | 亚洲国产一区二 | 91麻豆精品国产 | 人人cao| 五月网站 | 91精品国产99久久久久久红楼 | 好骚综合av | 性生活视频软件 | 天天舔天天| 黄色国产在线 | 国产丝袜一区二区 | h肉动漫无修一区二区无遮av | 国产午夜精品久久 | 色噜噜在线| 亚欧日韩在线 | 国产天堂 | 福利一区二区三区四区 | 色婷亚洲 | 少妇精品久久久久久久久久 | 天天综合天天做天天综合 | 影音先锋日韩精品 | 午夜剧场免费看 | 久久伊人超碰 | 日日操夜夜爽 | 成人久久久精品国产乱码一区二区 | 91网在线| 91麻豆成人精品国产 | 成人久久av | 亚洲欧美丝袜精品久久久 | 亚洲三级视频 | 真人第一次毛片 | 亚洲天堂网在线视频 | 亚洲一片二片 | 五月婷婷综合网 | 日韩毛片大全 | 久久久噜噜噜久久 | 国产靠逼网站 | www.久久伊人| 91超碰在线免费观看 | 日韩免费三级 | 冈本视频在线观看 | 国产手机在线 | 4438x全国最大成人 | 伊人天天干 | 综合网伊人 | 男操女视频在线观看 | 成人无遮挡 | 午夜av网址| 鲁丝一区二区三区 | 国产男女在线 | 亚洲成人激情在线 | 91欧美日韩 | 日韩在线专区 | 日韩精品视频在线观看免费 | 国产日本精品视频 | 成年人黄视频 | 日韩欧美自拍偷拍 | 开心激情五月婷婷 | 日韩福利网站 | 91在线视频免费 | 黄色小视频在线 | 午夜激情综合网 | 日日夜夜亚洲 | 日韩精品视频在线观看免费 | 天天操天天弄 | 欧美不卡在线视频 | 激情伊人网 | 国产精品视频久久久久 | av资源在线看 | 天天爱夜夜爽 | 亚洲视频八区 | 91视频啊啊啊 | 热99| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲日本香蕉 | 亚洲天堂免费视频 | 韩国一级片在线观看 | 欧美性精品 | 天天曰夜夜曰 | 五月导航 | 国产探花在线精品一区二区 | 日韩二区在线观看 | 一 级 黄 色 片免费网站 | 操操操av | 亚州国产精品 | 一级a性色生活片久久毛片 国产成人免费av一区二区午夜 | 欧美综合一区二区 | 亚洲成人激情小说 | 88xxav | 色涩综合 | 欧美老肥妇做.爰bbww视频 | 中文字幕在线永久 | 久久视频精品在线 | 亚洲网站在线播放 | 日韩中字在线 | 国产黄色www | 天天爽视频 | 久热国产视频 | 精品久久精品久久 | 91精品亚洲| 日韩视频在线观看一区二区 | 狠狠躁日日躁夜夜躁老司机 | 日韩精品在线观看网站 | 一级全黄裸体片 | 一区二区91 | 欧美一区中文字幕 | 激情插插 | 激情久久网 | 亚洲女同一区二区 | 日本成人福利视频 | 欧美三级在线看 | 色综合中文字幕 | 亚洲综合在线成人 | wwwwwwxxxxxx69| 久草国产精品视频 | 不卡av免费 | 亚洲欧美日韩精品在线 | 国产精品bbwbbwbbw| 男女污污软件 | 九色91popny蝌蚪 | 亚洲综合图区 | 亚洲综合一区二区 | 亚洲人天堂 | 亚洲免费色 | 午夜av在线 | 五月激情综合 | 三点尽露的大尺度国产 | 成人中文字幕+乱码+中文字幕 | 国产激情在线 | 青青草55| www日本在线 | 在线免费观看你懂的 | 国产麻豆乱码精品一区二区三区 | 手机看片1024日韩 | 免费黄网站在线看 | 国产精品一级二级三级 | 久久9999久久 | 精品欧美一区二区三区久久久 | 久久久精品一区二区三区 | 正在播放国产一区 | 亚洲狼人伊人 | 色香蕉在线视频 | 在线亚洲区 | 日韩成人不卡 | 天天干天天噜 | 超碰啪啪 | 国产不卡a | 好av在线| 伊人99热| av成人免费观看 | 色综合啪啪 | 婷婷深爱| 久久精品网址 | 黄色网址在线播放 | 国产91白丝在一线播放 | 极品大长腿啪啪高潮露脸 | 午夜影视网 | 波多野在线播放 | 超碰在线| 国产小视频免费在线观看 | 在线综合视频 | 亚洲精品乱码久久久久久蜜桃麻豆 | 一级欧美黄色片 | 在线观看免费观看在线 | 亚洲69视频| 三级自拍 | 久久久亚洲国产 | 日日夜夜天天 | 97狠狠| 亚洲一区二区三区国产精品 | 久久久sm调教网站 | 日产精品久久久 | 天堂久久网 | 青青草国产成人av片免费 | 亚洲欧美日韩中文在线 | 国产乱大交 | 国产精品国产三级国产a | 夜夜春亚洲嫩草一区二区 | 欧美黄色片 | 国产高清在线 | 黄色一级免费观看 | 超碰福利在线观看 | 欧美香蕉在线 | 91国产精品| 丝袜美腿亚洲综合 | 女人18毛片水真多18精品 | 亚洲视频在线观看视频 | 蜜桃av在线免费观看 | 亚洲精品水蜜桃 | 日韩精品视频免费 | 国产精品久久久久久久一区二区 | 国产网址在线 | 大陆av片 | 亚洲一区二区三区欧美 | 亚洲卡一| 成人网址在线观看 | 日韩精品网址 | 男女国产视频 | 色狠狠综合网 | 99久久婷婷国产综合精品青牛牛 | 快色网站 | 黄色a在线 | 中文字幕亚洲综合 | 久久手机看片 | 欧美视频一区在线观看 | 日本欧美日韩 | 91av不卡| 91麻豆国产在线 | av的天堂 | 不卡一二区| 蜜臀精品 | 日韩欧美国产中文字幕 | av在线高清观看 | 国产剧情在线视频 | jav中文字幕 | 久久久久国产精品人 | 40到50岁中老年妇女毛片 | 亚洲欧美成人网 | 天天干天天干天天 | 99免费视频 | 免费在线观看日韩av | 免费观看在线高清 | 天天网综合 | 国产人久久人人人人爽 | 性xxxx视频播放免费 | 成人国产精品久久久 | 在线不卡日韩 | 中文字幕人乱码中文 | h片在线免费看 | 福利网站在线观看 | 国产伦精品一区二区三区免.费 | 国产调教打屁股xxxx网站 | 国产成人自拍一区 | 人人爽人人爱 | 午夜污污 | 亚洲国产三区 | 不卡av一区 | 色综合中文 | 开心激情综合网 | 亚州成人| 国产激情免费 | 99热成人 | 日韩在线视屏 | 特级西西444www高清大胆免费看 | 成人在线免费 | 香蕉视频成人在线 | 在线视频中文字幕一区 | 天天舔天天射 | 国产传媒第一页 | 小嫩嫩12欧美 | 欧美专区一区 | 欧美三日本三级少妇三99 | 成人麻豆视频 | 久草视频在线免费看 | 欧美国产精品一区 | av永久在线 | 欧美a∨| 在线视频 91 | 日韩www| 日韩激情影院 | 17c国产精品 | www.自拍 | 亚洲成a人片在线观看中文 盗摄精品av一区二区三区 | 幸福宝在线观看 | 在线免费观看午夜视频8 | 在线超碰av| 手机在线观看免费av | 国产女人高潮时对白 | 91伊人久久 | 国产视频综合 | 国产情侣免费视频 | 欧美日韩视频在线观看一区 | 青娱乐毛片| 香蕉久久精品日日躁夜夜躁 | 天堂中文在线播放 | 女性裸体瑜伽无遮挡 | www.999热 | 国产免费黄 | 国产性生活片 | 精品久久综合 | 五月天激情综合 | 亚洲人高潮女人毛茸茸 | 天天干天天操天天爽 | 国产精品久久久久久亚洲调教 | 这里只有精品在线观看 | h视频在线免费观看 | 欧美日韩一级大片 | 青青青青草 | 中文第一页 | 欧美精品一区二区三区久久久竹菊 | 美国一级黄色大片 | 99久久久久久国产精品 | 妻色成人网 | 国产精品日韩高清 | 亚洲综合小说区 | 97人人射 | 91成人黄色 | 免费黄色在线网站 | 日韩不卡中文字幕 | 天天看天天爽 | 男女日批免费视频 | 特黄一级视频 | 在线看国产精品 | av三级网站 | 欧美三级韩国三级日本三斤 | 操欧美女人 | 三级视频在线观看 | 亚洲国内自拍 | 日韩av三区 | 成av人片一区二区三区久久 | 中文字幕第一区综合 | 毛片视频大全 | 伊人影院在线播放 | 亚洲欧美中文日韩在线 | 伊人久久成人网 | 成人国产 | 国产一区二区三区精品视频 | 九九精品在线视频 | 久久免费av | 岛国精品| 欧洲亚洲综合 | fc2成人免费视频 | 久久只有精品 | 奇米影视中文字幕 | 成人在线黄色 | 99热99热 | 日韩精品91| www.日韩一区 | 国产夜夜操 | 人人色视频 | 国产免费看av | 日韩第九页 | 成人日韩 | 亚洲一区二区二区久久成人婷婷 | 精产国产伦理一二三区 | 最新中文字幕第一页 | 夜夜操影视 | 日韩亚洲欧美在线 | 日日操日日爽 | 91精选视频| 亚洲天堂男人的天堂 | 四虎影院污 | 三级黄色网 | 成年人视频在线观看免费 | 超碰精品| 自拍新婚之夜初交视频1 | 天天操好逼| 久久精品首页 | 日韩一区二区三区四区五区六区 | www.com日本| 成人久久视频 | 奇米影视久久 | 一级免费在线 | 欧美日韩高清一区 | 天天干夜夜艹 | 日韩av在线播放观看 | 欧美日韩免费看 | 午夜大片网 | 99ri精品 | 亚洲精品自拍视频 | 人人插人人爽 | 最新av| 在线欧美成人 | 美女啪啪网站 | 一级做a爱片 | 欧美777| 成人福利在线 | 成人欧美一区二区三区黑人动态图 | www国产视频 | 一本加勒比hezyo综合 | 操你啦在线视频 | 17c在线观看| 韩国性猛交╳xxx乱大交 | 免费久久精品 | 亚洲免费激情视频 | 日韩午夜av| 伊人影视久久 | 免费看的黄色小视频 | 欧美猛操 | 福利亚洲 | 成人免费毛片观看 | 日韩精品中文字幕一区二区 | 日韩看片| 中文字幕在线观看第一页 | av在线免费网址 | 不卡精品| 99爱爱视频 | 天天爽夜夜爽人人爽 | 爱爱爱网 | 秋霞一级视频 | www.亚洲视频 | 国产在线欧美在线 | 伊人导航 | 中文字幕国产一区二区 | 免费在线观看黄色片 | 日本三级生活片 | 欧美精品一区二区在线观看 | 99视频在线观看免费 | 色久天堂| 91福利免费 | 欧美三级中文字幕 | 亚洲国产精品嫩草影院 | 学生孕妇videosex性欧美 | 国产精品久久久久久妇女 | 黄瓜污视频 | 亚州视频一区二区三区 | 欧美在线视频一区二区 | 一级特黄a大片免费 | 久久精品国产一区二区三区 | 夜夜草网站| 性喷潮久久久久久久久 | 亚洲h视频在线观看 | 黄色一级片免费在线观看 | 日本毛片在线看 | 国内自拍一区 | 精品无码久久久久久国产 | 国产精品一二三 | 4438x全国最大成人网 | 亚洲最新在线视频 | 日韩日b| 九一国产视频 | 国产经典一区 | 乱一色一乱一性一视频 | h在线| 国产aⅴ爽av久久久久成人 | 色中色综合 | www.四色 | 91丨九色丨国产在线观看 | 久久久综合 | 日韩经典一区二区 | 久久精品成人一区二区三区蜜臀 | 成人国产一区 | 久久久久久久久久久久一区二区 | 国产免费黄色录像 | 国产成人午夜精品 | 日本黄色免费看 | 三级网站免费观看 | 手机看片国产1024 | 免费成人av片 | 国产视频大全 | www.日韩精品 | 免费黄色在线播放 | 男男做爰猛烈啪啪高 | 国产视频污在线观看 | 国产成人一区二区啪在线观看 | 神马香蕉久久 | 久久久精| 日韩精品久久久久久免费 | 欧美大片一区 | 好色艳妇小说 | 2023国产精品 | 欧美一区久久 | 亚洲图片综合区 | 国内成人精品2018免费看 | 午夜一区在线观看 | 国产69精品久久 | 九九精品在线观看视频 | 性,国产三级在线观看 | 天天色影| 亚洲综合首页 | av激情小说| 色又色 | 国产乡下妇女做爰 | 久久小草| 色狠狠综合网 | 国产午夜精品久久久久久久 | 国产做爰免费视频观看 | 色婷婷av一区二区三区软件 | 99久久精品一区二区 | 五月婷婷激情四射 | 一级国产特黄bbbbb | 一级福利视频 | 艳妇臀荡乳欲伦69调教阅读 | 国产精品bbwbbwbbw在线 | 久久免费资源 | 欧美日韩另类视频 | 国产字幕在线观看 | 草久久久 | 亚洲网址在线 | 免费观看黄色小视频 | 特级淫片裸体免费看 | 一级片小视频 | 在线免费看av的网站 | 亚洲黄色天堂 | 欧美一区二区三区免费 | 国产精品300页 | 黄色成人av在线 | 少妇高潮久久久久久潘金莲 | 简单av网 | 久久久999精品 | 国产ts变态重口人妖hd | 色综合av在线 | av免费资源| 香蕉视频免费网站 | 亚洲视频在线观看免费视频 | 国产无套精品一区二区 | 国产51视频 | 五月天婷婷在线播放 | 国产精品久久久免费视频 | 婷婷狠狠干 | 天天爽夜夜爽夜夜爽 | 亚洲13p | 亚洲精品久久久久久一区二区 | 欧美一级特黄aaaaaa | 欧美日韩一二区 | 爱如潮水3免费观看日本高清 | 男人舔女人下部高潮全视频 | 优优色综合| 青青草成人在线观看 | 五月天丁香 | 日韩欧美国产亚洲 | 一区二区三区视频 | 婷婷色在线播放 | 久艹av在线| 东北毛片| 亚洲一区二区麻豆 | 欧美成年人视频 | 天天综合天天综合 | 特黄色一级片 | 99久久99久久久精品棕色圆 | 日本在线免费观看 | 少妇精品高潮欲妇又嫩中文字幕 | 亚洲第一视频网站 | wwwav在线| 中文字幕观看 | 久操av| 毛片在线免费播放 | 伊人蕉 | www色婷婷 | 激情视频网站在线观看 | 久久久久久久蜜桃 | www日日 | 一级黄色国产片 | 青青免费在线视频 | 青青草中文字幕 | 亚洲男人的天堂视频 | 成年人视频在线免费看 | 国内自拍第一页 | 免费观看一级黄色片 | av在线播放免费 | av资源吧首页 | 九九热国产在线 | 久久精品久久久久 | 911国产视频 | 91免费看片网站 | 成人先锋av| 成人一区二区三区四区 | 中文天堂在线中文 | 天天爱夜夜操 | 91高清视频在线观看 | 在线中文字幕网 | 蜜桃av久久久亚洲精品 | 刘亦菲毛片一区二区三区 | 98国产精品综合一区二区三区 | 免费黄色网址在线 | 男人av影院 | 牛牛av在线 | 91视频在线观看 | 自拍偷拍日韩精品 | 哪里看毛片 | 夜夜伊人| 黄色a大片| 亚洲精久| 天天射夜夜爽 | 中文字幕一区在线观看 | 亚洲视频五区 | 亚洲精品99久久久久中文字幕 | 亚洲精品一区二区18 | 国产精品12 | 91亚洲精品久久久蜜桃网站 | 三级国产在线 | 伊人影片 | 男人天堂av网站 | 91射| 波多野结衣一区二区三区在线 | 自拍视频第一页 | 亚洲欧美激情一区二区三区 | 亚洲日日夜夜 | 成人精品在线 | 色一情一交一乱一区二区三区 | 欧美日韩精品在线视频 | 波多野结衣一区二区三区四区 | 日本h在线| 日本成人在线视频网站 | 国产亚洲无| 一级特黄裸片免费播放 | 国产人人插 | 多啪啪免费视频 | 亚洲免费网站在线观看 | 新97超碰 | 成av人片一区二区三区久久 | 久久国产在线视频 | 精品久久久久久久久久久久久久久 | 亚洲在线一区 | 国产精品福利一区二区三区 | 修仙淫交(高h)h文 | 日本在线不卡一区 | 国产永久精品 | 中文字幕第页 | 日韩av大全| 狠狠干网址| 中文字幕亚洲精品在线 | 久久不卡区 | 午夜九九九 | 欧美伦理一区二区三区 | 夜夜躁狠狠躁日日躁av麻豆 | 国产精品第六页 | 欧美特级毛片 | cao在线视频 | 亚洲伦理在线视频 | а√在线中文网新版地址在线 | 亚洲成人18 | 第一色综合 | 亚洲第一免费视频 | 91av视频网 | 好吊视频一区二区三区四区 | 国产黑丝在线播放 | 中国黄色三级视频 | 亚洲欧美另类综合偷拍 | 一区二区三区av | 中文字幕在线免费视频 | 日韩欧美片 | 亚洲精品无人区 | 性高潮久久久久久久久 | 久久婷婷影院 | 91av官网 | 亚洲最大的av网站 | 国产视频999 | 色婷婷91 | 性欧美videos另类极品小说 | 亚洲综合视频在线 | 午夜久久久久久久久久 | 亚洲欧美日韩中文在线 | 亚洲欧美日韩国产综合 | 自拍色视频 | 国产丝袜一区二区三区 | 亚洲一二三区不卡 | 2017天天干| 国产亚洲欧美在线精品 | 不卡视频一区二区三区 | 久久久久久在线观看 | 亚洲精品日日夜夜 | 成人a级片 | 日本wwww色 | 国产成人亚洲欧洲在线 | 日本中文字幕视频 | 国产精品2| 男人舔女人下部高潮全视频 | 精品中文字幕一区二区 | 亚洲精品毛片一级91精品 | 精品国模| 黄色高清在线观看 | 视频在线观看视频 | 日韩一区二区三区在线播放 | 波多野结衣视频免费 | 韩国美女av | 找个黄色片看看 | av在线首页| 看黄色大片 | 国产精品国产成人国产三级 | 久久777 | 亚洲三级av| 波多野结衣在线播放视频 | a√在线观看 | 麻豆一区二区三区四区 | 欧美一区二区三区久久 | 欧美国产大片 | 天堂av中文字幕 | 91av免费看| 国内自拍av | 操操操免费视频 | 欧美日韩高清在线观看 | 波多野结衣一区二区在线 | 91麻豆精品国产91久久久久久久久 | 香蕉视频一区二区三区 | 人人插人人 | 在线高清观看免费 | 欧美精品一区三区 | 久久四虎 | 2018天天操 | 免费网站www在线观看 | 久久黑人 | 免费福利在线视频 |