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

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

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

nodejs的“文件系統(tǒng)”模塊可以操作文件。fs(文件系統(tǒng))模塊是nodejs提供的用于訪問本地文件系統(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提供的用于訪問本地文件系統(tǒng)的功能模塊,它使得運(yùn)行于nodejs環(huán)境下的JavaScript具備直接讀寫本地文件的能力。

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

let fs = require('fs');

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

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

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

  • fs.Dirent,目錄項(xiàng)類。通過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ān)信息(如文件類型、文件大小、文件描述符等)。

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

除了以上的類,fs模塊還提供了非常多的實(shí)例方法,它們可以直接通過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ù)都是異步的,不過它也同時(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ù)來提升系統(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í)所在的目錄,可以通過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盤等)。從寫法上來看,絕對(duì)路徑一般是以/開頭,表示驅(qū)動(dòng)盤的根目錄:

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

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

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

我們知道,一般windows都是使用反斜線作為路徑分隔符的。不過在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)通過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,  // 上次被訪問時(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í)例方法,來判斷當(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é)果的封裝。下面來介紹一些常用的方法:

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 {     ... // 文件不存在   }})

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

該方法還有一個(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('無權(quá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,通過返回值來判斷操作結(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ù)字,來表示這三類用戶對(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方法就是用來修改某個(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)的文件描述符,使用這類方法之前需要先通過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)閉文件,不過如果需要頻繁地操作文件,則該方法會(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ì)讀取過程的控制粒度更細(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在线 | 夜夜草网 | 欧美视频在线观看一区二区三区 | 久久波多野结衣 | 999亚洲欲妇 | 国产特黄大片aaaa毛片 | 丰满尤物白嫩啪啪少妇 | 亚洲国产97在线精品一区 | 99re9| 一区二区日韩精品 | 日本成人免费网站 | 欧美日韩视频一区二区 | 国产精品资源网 | 亚洲鲁鲁| 四色网址| 在线观看国产一区 | 波多野结衣一二区 | 欧美色拍 | 打开免费观看视频在线 | 男人操女人的网站 | 夜夜夜操| 中文字幕日本 | 国产三级一区 | 国产精品久久久久久久久久免费 | 国产在线中文字幕 | 欧美一区二区网站 | 啪啪免费av| 久久99精品久久久久久园产越南 | 国产激情一区 | 六月婷婷网 | 狠狠干2018 | 久久精品成人热国产成 | 波多野结衣一区二区在线 | 欧美另类极品videosbest使用方法 | 91精产品一区一区三区40p | 香蕉视频免费网站 | 欧美一区二区三区视频 | 久久99国产精品视频 | 国产极品视频 | 欧美精产国品一二三 | 日本黄色免费大片 | 欧美日韩国产一区 | 黄色片美女 | 亚洲国产精品天堂 | 一区二区三区免费在线 | 久久久久久久久久亚洲 | 国产麻豆乱码精品一区二区三区 | 日本顶级大片 | 亚洲午夜黄色 | 日日不卡av | 国产精品区二区三区日本 | 黄视频网站在线观看 | 91高清视频免费观看 | 亚洲专区 变态 另类 | 国产伦精品一区二区三区在线 | 亚洲自拍偷拍网站 | 黄色av网站免费观看 | 天天有av| 一区二区三区免费观看视频 | 日本一区二区三区在线播放 | 成人小视频免费观看 | 亚洲天堂欧美日韩 | 污片在线看 | 中文字幕在线观看国产 | 91se在线 | 久久伊人成人网 | 亚洲暴爽 | 国产又爽又黄的视频 | 蜜臀av性久久久久av蜜臀妖精 | 国产一区二区三区在线 | 最新中文字幕av专区 | 精品91在线 | 天堂成人在线 | 成人免费视频视频 | 一级a毛片在线观看 | 琪琪色综合 | 亚洲视频一区二区三区 | 自拍亚洲综合 | 久久精品这里 | 四虎在线视频免费观看 | 手机在线小视频 | 亚洲女人一区 | 亚洲乱码国产乱码精品精 | 日韩精品一区二区在线观看 | 五月天啪啪 | 青青草手机视频在线观看 | 久久精品99久久久久久 | 91成人精品视频 | 91精品国产综合久久久蜜臀粉嫩 | 国产一区二区不卡 | av高清在线 | 天天躁夜夜躁狠狠躁 | 国产高清第一页 | 一区二区精品国产 | 欧美极品视频在线观看 | 国产精品欧美综合亚洲 | 天天添天天操 | 久久久一本 | 91在线精品入口 | 日韩视频网 | 国产乱色精品成人免费视频 | 三级麻豆 | 亚色av| 91手机在线播放 | 在线一区视频 | 亚洲视频一区在线播放 | 在线欧美一区 | 成人看片黄a免费看视频 | 一区二区三区欧美日韩 | 综合色站导航 | 日日噜噜噜| 五月天丁香社区 | 天天干狠狠爱 | 国产精品一二三区视频网站 | 丁香激情视频 | 91蝌蚪91密月| 欧美一级全黄 | 91 在线观看 | 在线观看视频日韩 | 国产成人av一区二区三区不卡 | 国产视频综合 | 欧美亚洲综合在线 | 国产精品动漫一区二区三区 | 日韩大片在线 | 日韩三级在线 | 日韩欧美一本 | 日韩精品一区二区在线播放 | 久久久久国产精品夜夜夜夜夜 | 91资源在线视频 | 欧美日韩中文字幕在线观看 | 日韩av在线播放观看 | 中文亚洲欧美 | 亚洲最大在线 | 亚洲一区二区三区加勒比 | 欧美毛片在线 | 蜜色视频 | 国产午夜精品在线 | 奇米超碰在线 | 欧美日韩视频免费观看 | 91精品影视 | 夜夜躁狠狠躁日日 | 国产日产久久高清欧美一区 | 亚洲欧美激情视频 | 亚洲男人的天堂在线视频 | 三级视频在线看 | 精品国产123 | 亚洲第一综合网 | 麻豆精品一区 | 麻豆亚洲一区 | 超碰成人福利 | 一区二区福利 | 国产视频福利一区 | 中文字幕亚洲激情 | 五月激情开心网 | 婷婷在线播放 | 亚洲精品国产一区黑色丝袜 | 天天操天天射天天爽 | av最新网址| 亚洲精品日韩精品 | 久久成人精品 | 欧美一级爱爱 | 亚洲瑟 | 97超碰在线免费 | 一级福利片| 台湾佬在线 | 国产精品综合在线 | 国产igao为爱做激情在线观看 | 亚洲一级一区 | 成人免费视频网站在线观看 | 亚洲视频入口 | 久久综合成人 | 欧美日韩国产综合在线 | 尤物影院在线观看 | 一区二区三区av | 久久草精品 | 91久久国产综合久久91 | 亚洲国产精品成人综合久久久久久久 | 国产剧情精品 | 精品久久a| 国产免费脚交足视频在线观看 | 亚洲免费在线播放 | 免费视频色 | 影音先锋欧美色图 | 色婷婷激情五月 | 欧美一级视频在线观看 | 亚洲精品亚洲 | 中国黄色一级片 | 婷婷日韩 | 一区二区不卡在线 | www.99色 | 久久久久高潮 | 免费看日产一区二区三区 | 久久99精品久久久久久噜噜 | 综合在线国产 | 伊人狼人久久 | 久久精品123 | 大学生第一次破女处视频国产 | 在线免费看污视频 | 国产不卡a| 成年人一级片 | 国产一区二区三区精品毛片 | 欧美 日韩 国产 成人 在线 | 欧美日韩国产a | www.狠狠操 | 在线播放日韩 | 99国产精品一区二区 | 一区二区三区欧美在线观看 | 国产成年人免费视频 | 亚洲成人a v | 日韩黄色a级片 | 国产精品久久二区 | 亚洲国产精品久久久久久6q | 亚洲性在线观看 | av片网址| 冲田杏梨一区二区三区 | 性开放永久免费视频 | 最新在线黄色网址 | 狠狠搞视频 | 日本欧美色 | 国产成人高清在线 | 丁香六月婷婷 | 日本黄a三级三级三级 | 深爱综合网 | 免费毛片在线播放 | 久久久www成人免费无遮挡大片 | 伊人网狠狠干 | 中文字幕在线播放视频 | 日韩免费视频网站 | 99爱在线视频 | 色av影院 | 久久免费看少妇高潮av影视 | 欧美日韩中文字幕 | 999精品视频在线观看 | 在线视频综合 | 国产黄色片网站 | 伊人久久久久久久久久久久久 | 97国产免费| 亚洲激情不卡 | 亚洲三区视频在线观看 | 免费av不卡 | 中文字幕精品一区二区精品 | 浪妇淫交小说 | 久久久久国产一区二区 | 美女久久 | 色婷婷综合久久久中文字幕 | 最新中文字幕在线观看 | 女警白嫩翘臀呻吟迎合 | 国产不卡视频一区二区三区 | 四虎视频在线 | 特黄特色大片免费 | av高清不卡 | 女性裸体瑜伽无遮挡 | 国产精品99久久久久久久久久 | 日本一级黄色录像 | 黄色av网站在线 | 91看大片 | 日韩在线精品视频 | 亚洲剧情在线 | 日韩簧片 | 2019狠狠干 | 最新av网站在线观看 | 爱爱精品| 国产一级在线观看视频 | 就操网| 国产精品久久久久久久裸模 | 日韩国产综合 | 午夜在线观看视频 | 肉色欧美久久久久久久免费看 | 亚洲欧美日韩高清 | 午夜影院久久 | 夜色成人 | 九九热只有精品 | 婷婷九月综合 | 毛片网站在线观看 | javxxx| av 一区二区三区 | 国内久久久 | 午夜高潮 | 国产在线1 | 黄色一级片网站 | 尤物一区二区 | 国产精品久久久久久久久久辛辛 | 亚洲精品日本 | 精品动漫一区二区三区 | 欧美视频一区二区三区四区 | 日韩激情文学 | 波多野结衣一区二区在线 | 精品成人一区二区三区 | 天天躁日日躁aaaaxxxx | 一级做a爰片性色毛片2021 | 亚洲欧洲综合在线 | av天天射| 欧美xxxx性 | 播放一级黄色片 | www.射 | 日韩欧美一区二区在线 | 一级免费视频 | 四虎网站最新网址 | 久久视频一区 | 国产一区二区在线视频观看 | 国产精品久久777777换脸 | 亚洲蜜桃精久久久久久久 | 成年人a级片 | 久草青青草 | 亚洲成人黄色网 | 国产伦精品一区二区三区视频我 | 夜夜爽8888 | 国产成人精品一区二三区 | porn亚洲| 久久久免费精品视频 | 91在线日韩 | 亚洲 欧美 日韩 综合 | 最近最好的2019中文 | 黄色av免费在线观看 | 一级做a爰片久久毛片潮喷 欧美猛操 | 国产操人 | 在线日韩av | 日本69少妇 | 色av性av丰满av | 奇米影视一区二区 | 久久久一本精品99久久精品66 | 免费国产一区二区三区 | 中文字幕一二区 | 日本资源在线 | 国产毛片农村妇女系列bd | 成年人免费看毛片 | 精品动漫一区二区三区的观看方式 | 亚洲大胆| 91色视频网站 | 色综合加勒比 | 亚洲精品国产精品国自产网站 | 在线国产黄色 | 国产精品影音先锋 | 四虎永久在线视频 | 日韩在线视频二区 | 校园春色综合网 | 白白色视频在线 | 国产色噜噜噜在线观看精品 | 久久久久国产精品一区 | 亚洲视频一区二区在线观看 | 超碰88 | 午夜视频福利在线观看 | 亚洲综合伊人 | 国产强伦人妻毛片 | 免费在线观看黄色片 | 国产精品婷婷久久爽一下 | 欧美最猛性xxxxx(亚洲精品) | av免费入口 | 在线观看欧美日韩视频 | 亚洲区自拍 | 免费吸乳羞羞网站视频 | 中文字幕在线网站 | 国产精品精品久久久 | 红桃视频黄色 | 亚洲操操 | 午夜视频在线播放 | 你懂的在线免费观看 | 久久99久久99精品免视看婷婷 | 手机看片欧美 | 最近免费中文字幕大全免费版视频 | 亚洲四区在线 | 久久青草欧美一区二区三区 | 伊人av在线免费观看 | 欧美精品乱码久久久久久按摩 | 亚洲综合91| 亚洲精品视频一区二区三区 | 人人射人人 | 国产免费美女 | 日本一区二区三区四区在线观看 | 青娱乐久久 | 日韩av在线一区二区 | 亚洲人毛茸茸 | 夜夜夜爽 | 久久精品首页 | 性69无遮挡免费视频 | 午夜视频黄 | 操操操网站 | 超碰碰碰 | 欧美成人日韩 | 自拍偷拍视频网站 | 国产在线97| 欧美在线网站 | 日本视频一区二区 | 亚洲乱视频 | 久久青青| 91久久久久 | 先锋资源在线视频 | 久草麻豆 | 97精品久久人人爽人人爽 | www.污在线观看 | 色呦呦免费视频 | 国产美女精品视频国产 | 国产乱色精品成人免费视频 | 欧美一区二区三区激情啪啪 | 超碰97久久 | 国产在线a视频 | 欧美一区二区三区免费观看 | 亚洲精品乱码久久久久久黑人 | 欧美成人久久久 | av网站大全在线观看 | 美女视频在线观看免费 | 国产污视频在线看 | 亚洲毛片在线 | 综合色av| 国产原创av在线 | 中文字幕网站 | 欧美交受高潮1 | 美女视频91 | 91香蕉国产在线观看软件 | 亚洲激情成人网 | 国产99久久久国产精品免费看 | 依人在线 | 久久久www成人免费精品 | 免费在线观看亚洲 | 亚洲图片欧美激情 | 日韩精品在线看 | 欧美图片自拍偷拍 | 久久久影院| 日韩在线激情 | 欧美一级片免费观看 | 国产精品免费看 | 亚洲午夜免费 | 欧美伦理在线观看 | 中文字幕在线观 | 在线观看中文字幕一区 | 狠狠网站 | 久久久久在线观看 | 亚洲欧洲日本在线 | 狠狠干2017| 精品久久久毛片 | 夜夜精品视频一区二区 | 99久久婷婷国产综合精品草原 | 亚洲国产综合久久 | 91精东传媒理伦片在线观看 | 男人天堂2024 | 亚洲成人精品网 | 国产欧美日韩在线播放不了吗 | 午夜高潮视频 | 先锋影音一区二区三区 | 亚洲一二三视频 | 在线播放色| 久色伊人| www.日韩高清 | 亲子乱对白乱都乱了 | jav中文字幕| 日本三级欧美三级 | aaaa黄色片| 在线观看视频一区 | 婷婷久久久久 | 日本中文字幕免费观看 | 日韩三级黄色 | 香蕉国产精品 | av地址在线观看 | 精品少妇一区二区 | 欧类av怡春院 | 在线观看av网 | 伊人网在线观看 | 色片在线播放 | 你懂的国产视频 | 五月深爱婷婷 | 国产欧美日韩在线播放 | 国产福利二区 | 黄色片高清 | 第一章激情艳妇 | 亚洲私人影院 | а√在线中文网新版地址在线 | 九九视频在线观看 | 在线免费色 | 日韩av免费在线看 | 永久免费看片女女 | 日本在线免费视频 | 欧美一区二区三区在线 | 日韩欧美三级在线观看 | 日本美女影院 | 狠狠干一区| 欧美激情视频一区 | 好看的中文字幕第一页 | aav在线 | 午夜精品一区二区三区在线观看 | se99av| 老司机在线看片 | 成人免费看片 | 婷婷开心激情网 | 青青青青青青青青草 | 69视频在线| 日本三级日本三级日本三级极 | www久久久久 | 宅男噜噜噜一区二区三区 | 亚洲第一成人久久网站 | 欧美日本精品 | 精品国产福利 | 国产高清自拍视频 | 久久亚洲精品大全 | www.欧美色| 亚洲五十路 | 国产尤物在线视频 | 97精品超碰一区二区三区 | 在线黄色免费 | 欧美一a一片一级一片 | 国产成人精品aa毛片 | www.好了av | 香蕉视频污下 | 在线永久免费观看日韩a | 亚洲成人黄色网址 | 美日韩一区二区三区 | 亚洲精品久久7777777 | 色综合图片区 | 日韩不卡一二三区 | 久久网国产 | 大学生第一次破女处视频国产 | 国产福利精品在线观看 | 青青草小视频 | 韩国三级一区 | 亚洲三级黄色 | 嫩草在线视频 | 成人午夜淫片免费观看 | 国产性色视频 | 国产精品乱码一区二区三区 | 午夜高清福利 | 欧美成人精品一区二区三区在线看 | 在线草| 天天操人人干 | 男女无遮挡网站 | 欧日韩一区二区三区 | 伊人91| 天天干,天天操 | 深夜视频免费在线观看 | 乐播av一区二区三区在线观 | 国产麻豆交换夫妇 | 日日射日日干 | 91免费影片| 欧美人妖乱大交 | 欧美激情视频网 | 99er8| 色婷久久| 午夜视频在线观看一区二区 | 爱搞逼综合网 | 久草视频在线免费 | 在线观看黄色av | 国产a级黄色片 | 中文字幕综合在线分类 | 婷婷综合激情网 | 美女久久 | 嫩草国产精品 | 黑丝国产在线 | 国产一区二区三区91 | 日韩一区二区三免费高清在线观看 | 欧美一级片黄色 | 日韩成人午夜 | 不卡的av在线免费观看 | 天天操夜夜干 | 国产精品爽爽久久 | 高潮毛片无遮挡免费看 | 日韩免费福利 | 国内av网站 | 网站黄在线观看 | 亚洲欧美一区二区三区情侣bbw | 啪啪福利社 | 亚洲综合在线成人 | 性福利视频 | 中文字幕少妇在线三级hd | 亚洲精品www久久久久久广东 | 中国在线观看免费视频 | 激情小说av | 国产成人tv| 欧美大喷水吹潮合集在线观看 | aaa久久 | 蜜乳av中文字幕 | 国产99久久久欧美黑人 | 久久亚洲网站 | 中国毛片在线观看 | 伦伦影院午夜理伦片 | 久久午夜夜伦鲁鲁片 | 欧美一级片免费在线观看 | 初尝黑人巨炮波多野结衣 | 91亚洲视频 | 日韩影音 | 国产不卡精品视频 | 久久夜色精品国产欧美乱极品 | 成人在线免费视频播放 | a国产在线 | 国产乱欲视频 | 在线中文字幕观看 | 国产h视频在线 | 这里只有精品免费视频 | 日韩一区欧美 | 影音先锋在线国产 | 国产欧美大片 | 免费日批网站 | 国产一卡二卡在线 | 国产精品久久久久久久久图文区 | 手机看片日韩欧美 | 91av社区| 国产3p视频| 欧美巨大乳 | 久久久久香蕉视频 | 国产成人午夜精品5599 | 五月婷婷激情视频 | 中文字幕在线人 | 亚洲免费福利视频 | 日本一区二区三区四区在线观看 | 日韩在线播放一区二区 | 日本天堂在线播放 | 精品96久久久久久中文字幕无 | 久久免费国产视频 | 黄色操人视频 | 天天操人人爽 | 乳孔很大能进去的av番号 | 亚洲激情五月婷婷 | 国产一区二区激情 | 久久国产精品波多野结衣 | 九色自拍| 免费国产网站 | 精品国产乱码久久久久久婷婷 | 日本一卡二卡在线 | 成人免费看片入口 | 男女又爽又黄 | 国产午夜免费福利 | www.夜夜 | 欧美一性一乱一交一视频 | 一级裸体片 | 天天干天天摸天天操 | 国产女人水真多18毛片18精品 | 四虎影院新网址 | 久操国产 | 成人免费观看网站 | 丁香花五月| 天天摸天天操 | 日本三级生活片 | 国产在线伊人 | 日韩精品福利 | 国产视频三区 | 91精品网站 | 欧美成人第一页 | 久久视奸 | 亚洲天堂一区二区三区 | 亚洲国产v | 亚洲一区高清 | 九久久| 欧美天堂| 国产公妇在线观看中文版 | 毛片一区二区 | 国产无遮挡又黄又爽 | 欧美成视频 | 免费国产成人 | 成人免费一级伦理片在线播放 | 在线观看国产精品入口男同 | 超碰在线人人艹 | 日韩欧美不卡视频 | 国产精品91色 | 天天干天天色综合 | 日本天天操 | 天天爽天天色 | 国产一级特黄aaa大片 | 操www | 亚洲乱码国产乱码精品精98午夜 | 一起草av在线 | 国产手机视频在线 | 亚洲美女精品视频 | 免费看色 | 日日干夜夜爽 | 一色桃子在线精品播放 | 国产精品污网站 | 日b视频免费看 | 一级免费观看视频 | 日本高清黄色 | 在线看网站 | 日本在线观看中文字幕 | 综合色站导航 | 精品午夜久久 | 国内精品偷拍视频 | 五月开心网 | 亚洲欧美自拍偷拍视频 | 亚洲人成人毛片无遮挡 | 免费毛片在线播放 | 婚后打屁股高h1v1调教 | 久久免费视频观看 | 一路向西在线看 | 免费国产高清 | 6080日韩午夜伦伦午夜伦 | 久久两性视频 | 91欧美精品| 顶楼的大象啪啪片段 | 亚洲不卡一区二区三区 | 亚洲激情区 | 国产又黄又嫩又滑又白 | 一级免费看片 | 国产欧美大片 | 国产丝袜美腿一区二区三区 | 国产日韩精品一区二区 | 日韩一及片 | 日韩91视频 | 国产传媒在线 | 禁网站在线观看免费视频 | 亚洲一区美女 | 亚洲理论在线观看 | 亚洲手机视频 | 天天干天天干天天 | 国产女人爽到高潮久久久4444 | 久久久久三级 | 女同二区 | 欧美成人三级视频 | 日韩国产精品一区二区 | 日韩亚洲在线观看 | 中文字幕永久在线观看 | 在线观看免费中文字幕 | 91久| 欧美30p| 东京av在线 | 自拍偷拍精品视频 | 一级欧美在线 | 小优视频污 | 综合av一区| 成人在线视频一区二区 | 国产伦子伦对白在线播放观看 | 一级黄色免费看 | 91麻豆精品在线 | 看全色黄大色黄大片女一次牛 | 国产在线视频99 | 激情久久av| 狠狠躁日日躁夜夜躁 | 这里只有精品免费视频 | 国产精品一区二区三区在线播放 | 一区二区三区欧美在线 | 国产精品视频久久久久 | 在线观看欧美一区二区三区 | 免费在线看黄色 | 午夜免费播放观看在线视频 | 狠狠躁夜夜 | 91丝袜呻吟高潮美腿白嫩在线观看 | 久久久久久福利 | 成人av影视在线观看 | 在线免费观看a级片 | 奇米99 | 色久天堂| 欧美精品在线观看 | 成人免费高清 | 亚洲永久免费在线观看 | 久久一区二区三区四区 | 久久久久久美女 | 亚洲欧美日韩在线一区二区三区 | 日本精品网站 | 日韩精品视频在线观看网站 | 亚洲校园激情 | 亚洲欧美激情国产综合久久久 | 国产精品久久久久久久久久久免费看 | 国产日本欧美一区二区 | 国产69av| 色综合天天综合网天天狠天天 | 国产精品久久久爽爽爽麻豆色哟哟 | 我们好看的2018视频在线观看 | 观看av| 中文字幕一区二区三区有限公司 | 午夜久久久久久久久久影院 | 爱啪啪网站 | 欧美一区二区三区成人精品 | 国产suv精品一区 | 日韩欧美一区二区视频 | 激情五月婷婷综合网 | 精品久久久久久久久久 | 蜜桃传媒一区二区亚洲 | 亚洲国产99 | 国产精品系列在线观看 | 亚洲激情视频在线播放 | 欧美另类xxxx| 国产精品5区 | 日本大学生三级三少妇 | 欧美亚洲另类视频 | aaaa黄色片| 热久久在线 | 亚洲一区视频在线播放 | av大片在线播放 | 成年人看的视频网站 | 91私密视频 | 天堂网2018 | 国产福利在线观看视频 | 久久综合99re88久久爱 | 欧美二区三区 | 成a人片亚洲日本久久 | 成人自拍视频在线观看 | 久久久久女教师免费一区 | 天天久久 | 国产一级一片免费播放 | 国产91久久婷婷一区二区 | 欧美大片免费在线观看 | 狠狠撸在线视频 | 亚洲精品免费在线 | 亚洲一本之道 | 久久久中文 | 亚洲天堂一区在线观看 | 亚洲 欧美 国产 制服 动漫 | 亚洲无人区码一码二码三码 | 日韩精品视频在线观看网站 | 亚洲激情一区 | 国产区一区二区 | 亚洲成人高清在线 | 国产久一| 亚洲精品激情 | 亚洲国产一区二区三区a毛片 | 91搞 | 亚洲成人黄色小说 | 四虎永久在线 | 樱空桃在线观看 | 伊人网视频 | 自偷自拍亚洲 | 国产一级中文字幕 | 欧美bbbbbbbbbbbb精品 | 国产一区二区 | 伊人狼人综合 | 亚洲免费视频一区二区 | 18p在线观看 | 污污软件在线观看 | 中文字幕日韩欧美 | 亚洲第一黄色网 | 亚洲资源在线播放 | av第一区 | 在线观看69 | 日本不卡视频在线播放 | 久久久国产精品一区二区三区 | 国产h视频在线观看 | 在线xxxxx | 日日嗨av一区二区三区四区 | 精品免费久久久 | 激情黄色av | 日韩一区二区三区在线播放 | 99国产精品久久不卡毛片 | 91插插插插插 | 国产精品久久免费 | 福利二区视频 | 日韩精品一二三四区 | 伊人久久久久久久久 | 天天爱天天做 | 精精国产 | 亚洲精品aaaa| 高清一级片 | 在线观看日韩精品视频 | 国产精品久久久久久久久免费桃花 | 中文字幕不卡视频 | 色站综合 | 91文字幕巨乱亚洲香蕉 | 国产九色sp调教91 | 性高潮久久久久久久久 | 国产69精品久久 | 国产真实乱偷精品视频 | 四虎黄色网 | av一区在线| 欧美视频免费看 | 午夜视频免费在线 | 久久免费精品视频 | 欧美精品自拍偷拍 | 午夜免费观看 | 欧美另类天堂 | 国产成人在线观看免费网站 | 国产高清一区二区 | 日本一二三区视频 | 国产美女视频91 | 香蕉视频99| 欧美第一页在线 | 色在线视频观看 | 成人免费视频a | 综合网色| 色婷婷久久一区二区三区麻豆 | 国产精品密蕾丝袜 | 久久免费公开视频 | 五月婷婷开心网 | 亚洲男女啪啪 | 污网站在线播放 | 欧美淫视频 | www.日韩av.com | 国产www在线| 91成人免费在线 | 国产乱淫av片免费 | 欧洲中文字幕 | 天天综合av | 在线91av | 欧美狂猛xxxxx乱大交3 | 成人免费毛片日本片视频 | 成人勉费视频 | 久久久久久久久久久久久久免费看 | 激情久久网 | 亚洲小视频在线观看 | 欧美日韩在线综合 | 欧日韩在线观看 | 国产在线精品视频 | 成人亚洲网 | 尤物视频在线观看 | 欧美在线aa| 三年在线观看视频 | 亚洲精品久久区二区三区蜜桃臀 | 五月婷综合 | 涩涩屋视频| 亚洲欧美日韩国产一区 | 日韩免费片| 视频精品一区二区 | 日本高清视频网站 | 国产小视频在线看 | 国产激情视频一区二区 | 99精品国产一区二区 | 毛片天堂 | 成人区视频 | 精品国产一区二区三区久久狼黑人 | 欧洲一区二区视频 | 中文字幕在线观看国产 | 四虎精品在线观看 | 日本高清免费aaaaa大片视频 | 四虎福利视频 | 四虎成人精品永久免费av九九 | 精品一区二区三区久久久 | 亚洲欧美一区二区三区视频 | 久久福利视频导航 | 男人激情网| 亚洲欧美成人一区二区三区 | 国产精品入口夜色视频大尺度 | 91免费视频观看 | 456亚洲影院| 国产第一页在线播放 | 中年夫妇啪啪高潮 | 欧美成人一二区 | 国产精品久久久久久亚洲影视 | 亚洲视频一区在线观看 | 亚洲精品www | 大胆欧美gogo免费视频一二区 | 奇米影视第四色777 国产精品人人做人人爽人人添 | 香蕉人人精品 | 蜜臀久久精品久久久久 | 亚洲乱熟 | 国产精品免 | 麻豆av免费| 欧美日韩啪啪 | 亚洲图片欧美自拍 | 色播综合网 | 国产又大又粗又长 | 最新国产露脸在线观看 | 亚洲人成网77777 | 亚洲午夜黄色 | 欧美性xxxxx 欧美激情性做爰免费视频 av久草 | 91黄色片 | 麻豆射区| 久久99精品国产麻豆婷婷洗澡 | 特级毛片在线 | 欧美成人精品在线 | 日韩av一区二区在线播放 | 亚洲激情视频在线免费观看 | 国产午夜精品一区二区理论影院 | 亚洲第一视频在线播放 | 九色丨蝌蚪丨少妇调教 | 国产 欧美 在线 | 伊人青草视频 | 99久久久精品免费观看国产 | 久草青青草 | 99精品一区| 椎名空在线观看 | 九九综合九九综合 | 国产福利视频在线 | 日韩欧美大片在线观看 | 国产aⅴxxx片 | 最新国产精品视频 | 国产激情无套内精对白视频 | 欧美在线亚洲 | 国产三级伦理片 | 午夜国产片 | 精品国产精品三级精品av网址 | 亚洲欧美在线综合 | 亚洲男人天堂2018 | 中文字幕欧美在线观看 | 亚洲精品在线播放视频 | 黄色国产片 | 国产综合网站 | av色综合| av免费在线观看不卡 | 久久久精品在线观看 | 日本高清中文字幕 | 亚洲精品国产欧美 | 久久怡红院| 中文字幕视频免费 | 欧美激情国产精品免费 | 在线免费精品 | 亚洲天堂av网站 | 国内免费精品视频 | 成人播放器 | 日本中文字幕网站 | 日韩欧美a级片 | 欧美.www| 狼人综合伊人 | 91成人天堂久久成人 | 亚洲一区二区三区三州 | 亚洲丁香 | 免费国产一区 | 日韩免费视频观看 | 国产在线观 | 性欧美高清 | 先锋资源一区 | 久久9999久久免费精品国产 | 亚欧视频在线观看 | av二区在线|