欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

nodejs中哪個(gè)模塊提供文件操作api

本篇文章給大家分享的是有關(guān)nodejs中哪個(gè)模塊提供文件操作api,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

10多年的浠水網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整浠水建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“浠水網(wǎng)站設(shè)計(jì)”,“浠水網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

在nodejs中,文件系統(tǒng)模塊提供文件操作api。文件系統(tǒng)模塊(簡(jiǎn)稱fs模塊)允許用戶訪問(wèn)計(jì)算機(jī)上的文件系統(tǒng)并與之交互;使用fs模塊可以實(shí)現(xiàn)文件及目錄的創(chuàng)建,寫(xiě)入、刪除等操作。

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

一:如何讀整個(gè)文件內(nèi)容?

注意:讀取文件和寫(xiě)入文件可能理解很枯燥,但是我每次學(xué)習(xí)這樣的文章的時(shí)候都是為了下一篇文章做好準(zhǔn)備的,因?yàn)槲蚁乱黄恼碌膁emo需要使用到該方面的知識(shí),所以我就會(huì)把需要的理解的知識(shí)統(tǒng)統(tǒng)記錄一遍的。

在Node.js中,使用fs模塊來(lái)實(shí)現(xiàn)所有文件及目錄的創(chuàng)建,寫(xiě)入及刪除操作。

1、讀文件的方法:

在執(zhí)行讀文件操作時(shí),可以使用readFile方法與readFileSync方法讀取文件,有Sync等字樣的是同步方法,沒(méi)有這個(gè)字樣的是異步方法讀取,同步方法和異步方法的區(qū)別是:同步方法立即返回操作的結(jié)果,先看下相關(guān)的API:

1)readFileSync同步讀取文件API

使用方法讀取如下:

fs.readFileSync(filename, [options]);

filename參數(shù):用于指定讀取文件的完整文件路徑及文件名。

options參數(shù):該值為一個(gè)對(duì)象,它可以指定讀取文件時(shí)使用flag屬性指定該文件采取什么操作,默認(rèn)為 'r'; 可以指定值有如下:

  • 'r': 讀取文件,如果文件不存在會(huì)拋出異常。

  • 'r+': 讀取并寫(xiě)入文件,如果文件不存在會(huì)拋出異常。

  • 'rs': 同步方式讀取文件并且通知操作系統(tǒng)忽略本地文件系統(tǒng)的緩存,如果文件不存在會(huì)拋出異常。

  • 'w': 寫(xiě)入文件,如果文件不存在則創(chuàng)建該文件,如果文件已存在則清空文件內(nèi)容。

  • 'w+': 讀取并寫(xiě)入文件,其他功能和 'w'一樣。

  • 'a': 追加寫(xiě)入文件,如果文件不存在則創(chuàng)建該文件。

  • 'a+': 讀取并追加寫(xiě)入文件,文件不存在就創(chuàng)建文件。

在options參數(shù)中,我們可以使用 encoding屬性指定使用何種編碼格式來(lái)讀取該文件,屬性值有 'utf-8', 'ascii', 'base64', 下面先看看簡(jiǎn)單的demo。如下所示:

先看下目錄結(jié)構(gòu)如下:

### 目錄結(jié)構(gòu)如下:
demo1                                       # 工程名
|   |--- readFile                           # 讀取文件的文件夾            
|   | |-- index.html                        # html文件
|   | |-- index.js                          # js文件
|   | |-- package.json          
|   | |-- node_modules

如下代碼讀取文件代碼:

const fs = require('fs');
try {
  const data = fs.readFileSync('./index.html', 'utf-8');
  // 等待操作結(jié)果返回,然后打印結(jié)果
  console.log(data);
} catch(e) {
  console.log('讀取文件發(fā)生錯(cuò)誤');
}

在命令行中執(zhí)行 node index.js 然后打印結(jié)果如下:

nodejs中哪個(gè)模塊提供文件操作api

2) 異步讀取文件的API使用方法如下:

fs.readFile(filename, [options], callback);

filename 和 options 和 同步方法的參數(shù)是一樣的。

callback參數(shù) 是用于文件讀取完后執(zhí)行的回調(diào)函數(shù)。如下代碼所示:

const fs = require('fs');
fs.readFile('./index.html', 'utf-8', (err, data) => {
  if (err) {
    console.log('讀取文件時(shí)發(fā)生錯(cuò)誤');
  } else {
    console.log(data);
  }
});

執(zhí)行的結(jié)果和上面是一樣的。這里就不截圖了。

二:如何寫(xiě)入整個(gè)文件內(nèi)容?

寫(xiě)入文件,我們使用fs模塊中的 writeFile 方法 或 wirteFileSync方法。writeFile使用方法如下(wirteFileSync方法類似,無(wú)非沒(méi)有callback參數(shù)):

fs.writeFile(filename, data, [options], callback);

filename參數(shù) 為指定需要被寫(xiě)入文件的完整路徑及文件名。

data參數(shù) 為指定需要寫(xiě)入的內(nèi)容,值可以是一個(gè)字符串或一個(gè)Buffer對(duì)象,該字符串或緩沖區(qū)中的內(nèi)容將被完整地寫(xiě)入到文件中。

options值為一個(gè)對(duì)象(可選),選項(xiàng)名為flag,它有如下選項(xiàng)值:

  • 'flag': 用于指定該文件采取何種操作,默認(rèn)值為 'w', 含義是寫(xiě)入文件。該指定項(xiàng)所有值和上面readFile的值是一樣的。
    (文件不存在就創(chuàng)建該文件,文件存在時(shí)重寫(xiě)該文件)。

  • 'mode': 該屬性用于指定當(dāng)文件被打開(kāi)時(shí)對(duì)該文件的讀寫(xiě)權(quán)限。默認(rèn)值為 0666(可讀寫(xiě))。還有很多值自己可以百度了解下。

  • 'encoding': 用于指定使用何種編碼格式來(lái)寫(xiě)入該文件。可指定屬性值為 'utf8'、'ascii'、'base64'。

  • callback: 該參數(shù)用于文件讀取完畢時(shí)執(zhí)行的回調(diào)函數(shù)。

下面我們簡(jiǎn)單的做一個(gè)demo,在我們目錄下的 index.js 文件中編寫(xiě)代碼,在該目錄下創(chuàng)建一個(gè) message.txt文件并寫(xiě)入兩行文字。如下代碼:

const fs = require('fs');
const str = '這是第一行。\r\n這是第二行';
fs.writeFile('./message.txt', str, (err) => {
  if (err) {
    console.log('寫(xiě)入文件操作失敗');
  } else {
    console.log('寫(xiě)入文件操作成功');
  }
});

如下圖執(zhí)行命令:

nodejs中哪個(gè)模塊提供文件操作api

在目錄下會(huì)生成 message.txt文件,如下圖

nodejs中哪個(gè)模塊提供文件操作api

然后我們打開(kāi)文件,會(huì)看到其寫(xiě)入的內(nèi)容。

2)寫(xiě)入buffer對(duì)象,如下代碼:

const fs = require('fs');
const str = new Buffer('我喜愛(ài)編程');
fs.writeFile('./message.txt', str, (err) => {  if (err) {
    console.log('寫(xiě)入文件操作失敗');
  } else {
    console.log('寫(xiě)入文件操作成功');
  }
});

在message.txt中可以看到 '我喜愛(ài)編程' 幾個(gè)字。

3)設(shè)置options參數(shù)flag屬性選項(xiàng),比如追加數(shù)據(jù)這些,如下代碼:

const fs = require('fs');
const options = {
  flag: 'a'};
fs.writeFile('./message.txt', '這是追加的數(shù)據(jù)', options, (err) => {  if (err) {
    console.log('寫(xiě)入文件操作失敗');
  } else {
    console.log('寫(xiě)入文件操作成功');
  }
});

message.txt內(nèi)容編程如下了:我喜愛(ài)編程這是追加的數(shù)據(jù)

4)復(fù)制圖片文件

我們可以通過(guò)readFile方法讀取應(yīng)用程序?qū)?yīng)目錄下的一個(gè)圖片文件,在讀取文件時(shí)使用base64編碼,在該回調(diào)函數(shù)中使用writeFile方法,在該方法中使用base64編碼將讀取到的圖片文件數(shù)據(jù)復(fù)制到另一個(gè)圖片文件中。如下代碼:

const fs = require('fs');

fs.readFile('./images/1.png', 'base64', (err, data) => {
  fs.writeFile('./images/xx.png', data.toString(), 'base64', (err) => {    if (err) {
      console.log('寫(xiě)文件操作失敗');
    } else {
      console.log('寫(xiě)文件操作成功');
    }
  });
});

在image下有一個(gè) 1.png, 它會(huì)先復(fù)制,然后寫(xiě)入 xx.png中(該文件之前不存在的,會(huì)創(chuàng)建該圖片文件)。

三:如何在文件中的指定位置處讀入內(nèi)容?

3.1)打開(kāi)文件open方法或openSync方法

要實(shí)現(xiàn)在文件中的指定位置處讀入內(nèi)容,首先我們需要打開(kāi)該文件,fs模塊中的open方法或openSync方法打開(kāi)文件。open方法使用方式如下所示:

fs.open(filename, flags, [mode], callback);

前三個(gè)參數(shù)和readFile的參數(shù)是一個(gè)意思的。最后一個(gè)參數(shù)是執(zhí)行完成后的回調(diào)函數(shù)。該回調(diào)函數(shù)有兩個(gè)參數(shù),第一個(gè)是打開(kāi)文件失敗時(shí)的錯(cuò)誤對(duì)象,第二個(gè)參數(shù)為一個(gè)整數(shù)值,代表打開(kāi)文件時(shí)返回的文件描述符。

下面我們來(lái)打開(kāi)我們剛剛創(chuàng)建的 message.txt文件,如下代碼:

const fs = require('fs');

fs.open('./message.txt', 'r', (err, fd) => {
  console.log(fd);
});

執(zhí)行結(jié)果如下所示:

nodejs中哪個(gè)模塊提供文件操作api

3.2)從指定的位置讀取文件

如上面打開(kāi)文件之后,我們可以在其回調(diào)函數(shù)使用fs模塊中的read方法或readSync方法從文件的指定位置處讀取文件,也可以使用fs模塊中的write方法或writeSync方法從文件中指定處寫(xiě)入數(shù)據(jù)。

fs.read(fd, buffer, offset, length, position, callback);

fd參數(shù)是 上面open打開(kāi)文件返回的文件描述符。

buffer參數(shù) 是一個(gè)buffer對(duì)象,用于指定將文件數(shù)據(jù)讀取到那個(gè)緩存區(qū)中。

offset:用于指定向緩沖區(qū)中寫(xiě)入數(shù)據(jù)的開(kāi)始位置。

length:用于指定從文件中讀取的字節(jié)數(shù)。

position: 用于指定讀取文件時(shí)的開(kāi)始位置。

callback:用于指定文件操作完畢時(shí)的回調(diào)函數(shù)。如下所示:

function(err, bytesRead, buffer) {}
  • err: 為操作失敗時(shí)的錯(cuò)誤對(duì)象。

  • bytesRead: 代表實(shí)際讀取的字節(jié)數(shù)。

  • buffer:為被讀取的緩沖區(qū)對(duì)象。

下面我們來(lái)看個(gè)demo代碼如下:

const fs = require('fs');
// message.txt 內(nèi)容為:我喜愛(ài)編程這是追加的數(shù)據(jù)
fs.open('./message.txt', 'r', (err, fd) => {
  const buf = new Buffer(255);
  // 一個(gè)漢字的utf編碼為三個(gè)字節(jié)數(shù)據(jù)
  fs.read(fd, buf, 0, 9, 3, (err, bytesRead, buffer) => {
    console.log(buffer.slice(0, bytesRead).toString()); // 喜愛(ài)編  });
});

如上代碼message.txt內(nèi)容為:我喜愛(ài)編程這是追加的數(shù)據(jù),position為3,從第三個(gè)字節(jié)開(kāi)始讀取文件,然后長(zhǎng)度為9個(gè)字節(jié),一個(gè)漢字3個(gè)字節(jié),因此結(jié)果為 '喜愛(ài)編';

四:如何在文件中的指定位置處寫(xiě)入內(nèi)容?

在文件被打開(kāi)后,可以使用fs模塊中的write方法或writeSync方法從一個(gè)緩存區(qū)中讀取數(shù)據(jù)并從文件的指定位置處寫(xiě)入這些數(shù)據(jù)。使用方法如下所示:

fs.write(fd, buffer, offset, length, position, callback);

fd參數(shù)為描述符。

buffer參數(shù)為一個(gè)Buffer對(duì)象,用于指定從哪個(gè)緩存區(qū)中讀取數(shù)據(jù)。

offset參數(shù)用于指定從緩存區(qū)中讀取數(shù)據(jù)時(shí)的開(kāi)始讀取位置。

length參數(shù)用于指定從緩存區(qū)中讀取的字節(jié)數(shù)。

position參數(shù)值用于指定寫(xiě)入文件時(shí)的開(kāi)始位置。

callback參數(shù)用于指定文件寫(xiě)入操作執(zhí)行完畢時(shí)的回調(diào)函數(shù)。該回調(diào)函數(shù)如下:

function(err, written, buffer) {}
  • err參數(shù)為寫(xiě)入失敗時(shí)的錯(cuò)誤對(duì)象。

  • written: 代表被寫(xiě)入的字節(jié)數(shù)。

  • buffer: 代表被讀取的緩沖區(qū)對(duì)象。

下面是一個(gè)簡(jiǎn)單的demo,如下所示:

const fs = require('fs');

const buf = new Buffer('我喜愛(ài)編程');

fs.open('./message.txt', 'w', (err, fd) => {
  fs.write(fd, buf, 3, 9, 0, (err, written, buffer) => {    if (err) {
      console.log('寫(xiě)文件操作失敗');
    } else {
      console.log('寫(xiě)文件操作成功');
    }
  });
});

在message.txt中顯示為 喜愛(ài)編 這三個(gè)字。

五:如何創(chuàng)建與讀取目錄?

5.1) 創(chuàng)建目錄mkdir和mkdirSync方法

在fs模塊中,可以使用mkdir方法創(chuàng)建目錄,該方法使用方式如下所示:

fs.mkdir(path, [mode], callback);
  • path參數(shù)用于指定需要被創(chuàng)建的目錄完整路徑及目錄名。

  • mode參數(shù)用于指定該目錄的權(quán)限,默認(rèn)值為0777(表示任何人可讀寫(xiě)該目錄)。

  • callback是回調(diào)函數(shù)。

下面是一個(gè)簡(jiǎn)單的demo,如下所示:

const fs = require('fs');

fs.mkdir('./test', (err) => {  if (err) {
    console.log('創(chuàng)建目錄操作失敗');
  } else {
    console.log('創(chuàng)建目錄操作成功');
  }
});

如下所示:

nodejs中哪個(gè)模塊提供文件操作api

5.2)讀取目錄readdir和readdirSync方法

在fs模塊中,使用readdir方法讀取目錄,該方法使用如下所示

fs.readdir(path, callback);

path參數(shù)用于指定需要被讀取的目錄的完整路徑及目錄名。

callback參數(shù)用于指定讀取目錄操作的回調(diào)函數(shù)。該回調(diào)函數(shù)如下所示:

function(err, file) {}
  • err 為讀取目錄操作失敗的回調(diào)函數(shù)。

  • file參數(shù)值為一個(gè)數(shù)組,讀取到的文件中的所有文件名。

如下demo所示:

const fs = require('fs');

fs.readdir('./', (err, files) => {  if (err) {
    console.log('讀取目錄操作失敗');
  } else {
    console.log(files);
  }
});

如下圖所示:

nodejs中哪個(gè)模塊提供文件操作api

六:如何查看與修改文件或目錄的信息?

6.1)查看文件或目錄的信息

在fs模塊中,可以使用stat方法或lstat方法查看一個(gè)文件或目錄的信息。這兩個(gè)方法唯一的區(qū)別是當(dāng)查看符號(hào)鏈接文件的信息
時(shí),必須使用lstat方法。使用方法如下所示:

fs.stat(path, callback);
fs.lstat(path, callback);

path參數(shù)用于被查看的文件或目錄的完整路徑及文件名或目錄名。

callback是回調(diào)函數(shù)。如下回調(diào)函數(shù)

function(err, stats) {}
  • err 參數(shù)值為查看文件或目錄信息操作失敗時(shí)觸發(fā)的錯(cuò)誤對(duì)象。

  • stats參數(shù)值為一個(gè) fs.Stats對(duì)象,該對(duì)象有如下一些方法,在這些方法中不包含任何參數(shù)。

isFile: 用于判斷被查看的對(duì)象是否為一個(gè)文件,如果是則返回true,否則的話返回false。

isDirectory: 用于判斷被查看的對(duì)象是否為一個(gè)目錄,如果是的話返回true,否則的話返回false。

還有很多很多其他的方法,這里不一一介紹,用的比較少,有需要的話,可以自己百度一下看看。

下面是使用 stat的使用demo,查看應(yīng)用程序根目錄下的 message.txt文件并且在回調(diào)函數(shù)中的第二個(gè)參數(shù)值 fs.Stats對(duì)象在控制臺(tái)中的輸出有哪些?

const fs = require('fs');

fs.stat('./message.txt', (err, stats) => {
  console.log(stats);
});

如下圖所示顯示:

nodejs中哪個(gè)模塊提供文件操作api

6.2)檢查文件或目錄是否存在exists和existsSync方法

在fs模塊中,可以使用exists方法檢查一個(gè)文件或目錄是否存在,該方法使用方式如下所示:

fs.exists(path, callback);

path參數(shù):用于指定需要被檢查的文件或目錄的完整路徑。
callback: 是回調(diào)函數(shù),該回調(diào)函數(shù)如下所示:

function(exists) {}
  • exists參數(shù),當(dāng)文件或目錄存在時(shí),該參數(shù)值為true,否則的話,該參數(shù)值為false。

下面是一個(gè)簡(jiǎn)單的demo,如下代碼所示:

const fs = require('fs');

// 該目錄是存在的
fs.exists('./message.txt', (exists) => {
  console.log(exists); // true
});

// 該目錄是不存在的
fs.exists('./message2.txt', (exists) => {
  console.log(exists); // false
});

6.3) 獲取文件或目錄的絕對(duì)路徑realpath和realpathSync方法

在fs模塊中,可以使用 realpath方法獲取一個(gè)文件或目錄的絕對(duì)路徑,該方法使用如下所示:

fs.realpath(path, [cache], callback);
  • cache 參數(shù)是可選的,path和callback是必須的。

  • path參數(shù)為需要查看的文件或目錄的完整路徑。

  • cache參數(shù)為一個(gè)對(duì)象,其中存放了一些預(yù)先指定的路徑。具體的百度下,這個(gè)參數(shù)用的不多。

  • callback是回調(diào)函數(shù),該回調(diào)函數(shù)有2個(gè)參數(shù),err參數(shù)值為獲取目錄的絕對(duì)路徑失敗的錯(cuò)誤對(duì)象。resolvedPath參數(shù)值為獲取
    到的文件或目錄的絕對(duì)路徑。

下面是一個(gè)簡(jiǎn)單的demo,如下所示:

const fs = require('fs');

fs.realpath('./message.txt', (err, resolvedPath) => {  if (err) {    throw err;
  } else {
    console.log(resolvedPath);
  }
});

執(zhí)行如下所示:

nodejs中哪個(gè)模塊提供文件操作api

6.4) 使用ReadStream對(duì)象讀取文件

在fs模塊中,可以使用createReadStream方法創(chuàng)建一個(gè)將文件內(nèi)容讀取為流數(shù)據(jù)的ReadStream對(duì)象,該方法使用如下所示:

fs.createReadStream(path, [options]);

path 該參數(shù)用于指定需要被讀取的文件的完整路徑及文件名。

options為一個(gè)對(duì)象,它有如下屬性:

  • flags: 用于指定對(duì)該文件采取什么操作,默認(rèn)值為 'r', 它的用法和readFile方法中的flags屬性一樣的。

  • encoding: 指定使用什么編碼來(lái)讀取該文件,可指定的值有 'utf8', 'ascii', 'base64'. 默認(rèn)值為null.

  • start: 指定文件的開(kāi)始讀取位置。

  • end: 指定文件的結(jié)束讀取位置。

還有很多其他的參數(shù),這里不一一講解,可以自行百度下即可。

下面簡(jiǎn)單的使用一個(gè)demo來(lái)了解下使用:如下代碼:

const fs = require('fs');/*
 一個(gè)漢字三個(gè)字節(jié),message.txt的內(nèi)容為:我喜愛(ài)編寫(xiě)代碼
 因此從第三個(gè)位置開(kāi)始,到第十二個(gè)位置結(jié)束,因此數(shù)據(jù)應(yīng)該為 喜愛(ài)編寫(xiě)*/const options = {
  start: 3, 
  end: 12};
const file = fs.createReadStream('./message.txt', options);

file.on('open', (fd) => {
  console.log('開(kāi)始讀取文件');
});

file.on('data', (data) => {
  console.log('讀取到的數(shù)據(jù):' + data);
});

file.on('end', () => {
  console.log('文件已全部讀取完畢');
});

file.on('close', () => {
  console.log('文件被關(guān)閉');
});

file.on('error', (err) => {
  console.log('讀取文件失敗');
});

如下圖所示:

nodejs中哪個(gè)模塊提供文件操作api

我們可以使用 ReadStream對(duì)象的pause方法暫停data事件的觸發(fā),同時(shí)也意味著停止文件的讀取操作。而已經(jīng)被讀取到的操作系統(tǒng)緩存區(qū)中的數(shù)據(jù)也將被暫時(shí)保存在操作系統(tǒng)緩沖區(qū)中,在使用了pause方法暫停data事件的觸發(fā)之后,也可以使用ReadStream對(duì)象的resume方法恢復(fù)data事件的觸發(fā),也就意味著可以繼續(xù)讀取文件的數(shù)據(jù)。

如下demo:

const fs = require('fs');

const readStream = fs.createReadStream('./message.txt');

readStream.pause();

readStream.on('data', (data) => {
  console.log('獲取到的數(shù)據(jù)為:' +data);
});

setTimeout(() => {
  readStream.resume();
}, 1000);

讀取過(guò)程中,斷聽(tīng)了一秒后,繼續(xù)把數(shù)據(jù)讀出來(lái)了。

注意:寫(xiě)入文件的方法是 WriteStream, 使用方式和讀方式類似,這里不多介紹。

以上就是nodejs中哪個(gè)模塊提供文件操作api,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前名稱:nodejs中哪個(gè)模塊提供文件操作api
文章轉(zhuǎn)載:http://www.chinadenli.net/article38/jcodpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)移動(dòng)網(wǎng)站建設(shè)域名注冊(cè)網(wǎng)站設(shè)計(jì)App開(kāi)發(fā)定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站