摘要:如果打開(kāi)一個(gè)文件的符號(hào)鏈接文件進(jìn)行編輯,操作系統(tǒng)將自動(dòng)打開(kāi)符號(hào)鏈接中所指向的原文件進(jìn)行編輯,如果打開(kāi)一個(gè)目錄的符號(hào)鏈接文件進(jìn)行文件的操作編輯或刪除操作,則操作系統(tǒng)將西東打開(kāi)符號(hào)鏈接中所指向的原目錄并執(zhí)行相應(yīng)的操作。
8. 對(duì)文件或目錄執(zhí)行的其他操作 8.1 修改文件名字或移動(dòng)文件目錄fs.rename
fs.rename(oldPath, newPath, callback(err))
使用rename方法移動(dòng)文件或目錄,當(dāng)移動(dòng)后的路徑與原路經(jīng)為同一路徑,則修改該文件的名字
若移動(dòng)后的文件名或目錄名與原文件名或目錄名不同時(shí),則執(zhí)行文件或目錄的移動(dòng)操作
const fs = require("fs"); let mkdir = "./mkdir"; fs.rename("./one", "./two", (err) => { if (err) { console.log(`fs.rename file one to two failed~`); return false; } console.log(`fs.rename file one to two success~`); })8.2 創(chuàng)建文件的硬鏈接fs.link
fs.link(oldPath, newPath)
srcPath參數(shù)用于指定需要被創(chuàng)建硬鏈接的文件的完整路徑及文件名
dstPath參數(shù)用于指定被創(chuàng)建硬鏈接的完整路徑及文件名,該硬連接與源文件必須位于同一卷中
異步創(chuàng)建與刪除文件的硬鏈接fs.linkSync(srcPath, dstPath)
const fs = require("fs"); let linkFile = "link.txt"; let linkCopyFile = "linkCopy.txt"; let data = "創(chuàng)建與刪除文件的硬鏈接"; fs.writeFile("./link.txt", data, (err) => { if (err) { console.log(`write file failed`); return false; } fs.link(linkFile, linkCopyFile, (err) => { if (err) { console.log(`fs.link ${linkFile} file failed~`); return false; } console.log(`fs.link ${linkCopyFile} file success~`); }); });8.3 刪除文件的硬鏈接fs.unlink
fs.unlink(path, callback(err))
const fs = require("fs"); let linkFile = "link.txt"; let linkCopyFile = "linkCopy.txt"; let data = "創(chuàng)建與刪除文件的硬鏈接"; fs.unlink(linkCopyFile, (err) => { if (err) { console.log(`fs.unlink ${linkFile} file failed~`); return false; } console.log(`fs.unlink ${linkCopyFile} file success~`); })8.4 創(chuàng)建與查看符號(hào)鏈接
符號(hào)鏈接,是一種特殊的文件,這個(gè)文件中僅包含了另一個(gè)文件或目錄的路徑及文件名或目錄名。如果打開(kāi)一個(gè)文件的符號(hào)鏈接文件進(jìn)行編輯,操作系統(tǒng)將自動(dòng)打開(kāi)符號(hào)鏈接中所指向的原文件進(jìn)行編輯,如果打開(kāi)一個(gè)目錄的符號(hào)鏈接文件進(jìn)行文件的操作編輯或刪除操作,則操作系統(tǒng)將西東打開(kāi)符號(hào)鏈接中所指向的原目錄并執(zhí)行相應(yīng)的操作。如果刪除符號(hào)鏈接文件,不會(huì)刪除原文件或目錄,如果刪除或移動(dòng)原文件互哦目錄,符號(hào)鏈接文件也不會(huì)被刪除,這是會(huì)產(chǎn)生一種稱(chēng)為斷鏈的現(xiàn)象
fs.symlink(srcPath, dstPath, [type], callback(err))
type--> file, dir(default,非windows只能使用dir), function(only windows)
同步創(chuàng)建與查看符號(hào)鏈接fs.symlinkSync(srcPath, dstPath, [type])
const fs = require("fs"); fs.symlink("./one.js", "./two.js", "file", (err) =>{ if(err) { console.log(`fs.symlink one.js to two.js failed~`, err); return false; } console.log(`fs.symlink one.js to two.js success~`) })8.5 readlink讀取符號(hào)鏈接
同步讀取符號(hào)鏈接fs.readlinkSync(path),path指定符號(hào)鏈接的路徑及文件名
const fs = require("fs"); fs.symlink("./one.js", "./two.js", "file", (err) => { if (err) { console.log(`fs.symlink one.js to two.js failed~`, err); return false; } console.log(`fs.symlink one.js to two.js success~`); fs.readlink("./two.js", (err, linkString) => { if (err) { console.log(`fs.readlink file failed~`, err); return false; } console.log(linkString); }) }); /** * fs.symlink one.js to two.js success~ * ./one.js * **/8.6 截?cái)辔募?b>fs.truncate()
所謂對(duì)文件進(jìn)行截?cái)嗖僮?,是指一種首先清除文件內(nèi)容,然后修改文件尺寸的操作
換句話(huà)說(shuō)就是對(duì)文件內(nèi)容進(jìn)行修改
fs.truncate(filename, length, callback(err))
同步截?cái)辔募?b>fs.truncateSync(filename, length)
one.js原本內(nèi)容
console.log("this is one.js");
對(duì)one.js文件進(jìn)行截?cái)?/p>
const fs = require("fs"); fs.truncate("./one.js", 10, (err) => { if (err) { console.log(`對(duì)文件進(jìn)行截?cái)嗖僮魇, ${err}`); return false; } fs.stat("./one.js", (err, stats) => { if (err) { console.log(`fs.stat file one.js failed, ${err}`); return false; } console.log(`fs.stat file one.js success~`); console.log(`./one.js size: ${stats.size} bytes`); }); }); /** * console.lo * **/8.7 刪除空目錄
只能刪除空目錄,如果不是空目錄,會(huì)刪除失敗
const fs = require("fs"); fs.rmdir("./dirOne", (err) => { if (err) { console.log(`fs.rmdir dir one failed~, ${err}`); return false; } console.log(`fs.rmdir dir one success~`); });8.8 監(jiān)視文件或目錄
使用watchFile方法對(duì)文件進(jìn)行監(jiān)視,并且在監(jiān)視到文件被修改時(shí)執(zhí)行某些處理方法
fs.watchFile(filename, [options], listener)
options 是一個(gè)對(duì)象,persistent屬性默認(rèn)為true,所以當(dāng)監(jiān)視文件后,應(yīng)用程序沒(méi)有被立即退出,改為false就會(huì)立即退出。
options interval屬性方法設(shè)置每隔多少毫秒檢查一下該文件有沒(méi)有發(fā)生變化
function(curr, prev);,curr是fs.Stats對(duì)象,代表被修改之后的當(dāng)前文件
prev參數(shù)值也是一個(gè)fs.Stats對(duì)象,代表被修改之前的當(dāng)前文件
const fs = require("fs"); let filename = "./one.js" fs.watchFile(filename, { persistent: true, interval: 100 }, (curr, prev) => { if (Date.parse(prev.ctime) === 0) { console.log(`${filename}文件被創(chuàng)建`); } else if (Date.parse(curr.ctime) === 0) { console.log(`${filename}文件被刪除`); } else if (Date.parse(prev.mtime) !== Date.parse(curr.mtime)) { console.log(`${filename}文件被修改`); } else { console.log(`${filename}文件沒(méi)有被操作`); } if (Date.parse(curr.ctime) !== 0) { console.log(`${filename}文件的大小為${curr.size}bytes`); } })8.9 取消監(jiān)控
fs.unwatchFile(filename, [listener])
watch方法,對(duì)文件或目錄進(jìn)行監(jiān)視,并且在監(jiān)視到文件或目錄被修改時(shí)執(zhí)行某些處理
fs.watch(filename, [options], [listener])
var watcher = fs.watch("./file01.txt", function (event, filename) { console.log(event);//事件名 console.log(filename);//文件名 watcher.close();//關(guān)閉監(jiān)視 });8.10 遍歷文件夾里所有的文件和目錄,并判斷某一個(gè)文件里是否有某一些內(nèi)容
const fs = require("fs"); let filePath = path.resolve("/root/files/order"); fileDisplay(filePath); function fileDisplay(filePath) { fs.readdir(filePath, (err, files) => { // 這里的files是根目錄下的直接子文件和子目錄 if (err) { console.error(err); return false; } files.forEach((filename) => { // 對(duì)根目錄下的直接子文件和子目錄進(jìn)行遍歷 // 利用path的拼接路徑方法 // 找到該文件的路徑 let fileDir = path.join(filePath, filename); console.log(fileDir); fs.stat(fileDir, (err, stats) => { // 利用fs的stat方法判斷遍歷的對(duì)象是文件還是目錄 if (err) { console.error("get file stats info failed"); return false; } let isFile = stats.isFile(); let isDir = stats.isDirectory(); if (isFile) { if (fileDir.indexOf("user.js") > 0) { fs.readFile(fileDir, (err, targetFileData) => { if (targetFileData.indexOf("var id = "") > 0) { console.log("the user.js has id"); } else { console.log("the user.js has not id", fileDir); } }) } } else { fileDisplay(fileDir); } }) }) }) }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92876.html
摘要:在中,只支持單線(xiàn)程。在這種場(chǎng)合下,如果能夠使用多進(jìn)程,則可以為每個(gè)請(qǐng)求分配一個(gè)進(jìn)程,從而可以更好地使用服務(wù)器端的資源。進(jìn)程進(jìn)程對(duì)象的屬性用于運(yùn)行應(yīng)用程序的可執(zhí)行文件的絕對(duì)路徑的版本號(hào)及其各依賴(lài)的版本號(hào)當(dāng)前運(yùn)行的平臺(tái)用于讀入標(biāo)準(zhǔn)輸入流的對(duì)象。 Process 在Node.js中,只支持單線(xiàn)程。但是在應(yīng)用程序中,如果只使用單線(xiàn)程進(jìn)行操作,從接收請(qǐng)求開(kāi)始到返回響應(yīng)為止的這段時(shí)間內(nèi)可能存在很長(zhǎng)...
6. 目錄操作 6.1 創(chuàng)建目錄 如果存在該目錄,就創(chuàng)建失敗 同步創(chuàng)建目錄fs.mkdirSync(path, [mode]) const fs = require(fs); let mkdir = ./mkdir; fs.mkdir(mkdir, (err) => { if (err) { console.log(`mkdir ${mkdir} file faile...
摘要:中各種用于讀取數(shù)據(jù)的對(duì)象對(duì)象描述用于讀取文件代表客戶(hù)端請(qǐng)求或服務(wù)器端響應(yīng)代表一個(gè)端口對(duì)象用于創(chuàng)建子進(jìn)程的標(biāo)準(zhǔn)輸出流。如果子進(jìn)程和父進(jìn)程共享輸入輸出流,則子進(jìn)程的標(biāo)準(zhǔn)輸出流被廢棄用于創(chuàng)建子進(jìn)程的標(biāo)準(zhǔn)錯(cuò)誤輸出流。 9. stream流 fs模塊中集中文件讀寫(xiě)方法的區(qū)別 用途 使用異步方式 使用同步方式 將文件完整讀入緩存區(qū) readFile readFileSync 將文件部...
fs文件系統(tǒng) 在Node.js中,提供一個(gè)fs模塊,以實(shí)現(xiàn)文件及目錄的讀寫(xiě)操作。 1. 同步和異步方法 一般來(lái)講,讀取文件使用異步的方法,但是在讀取例如系統(tǒng)配置文件時(shí),應(yīng)該使用同步的方法 2. 普通文件寫(xiě)入和讀取 2.1 文件寫(xiě)入 2.1.1 寫(xiě)入一個(gè)基本的文本文件 如果不存在要寫(xiě)入的文件,那么將會(huì)自動(dòng)創(chuàng)建一個(gè)文件 const fs = require(fs); let writeData = T...
閱讀 3361·2021-09-30 09:47
閱讀 2745·2021-08-18 10:22
閱讀 2531·2021-08-16 10:49
閱讀 2899·2019-08-30 15:53
閱讀 2740·2019-08-29 16:14
閱讀 3194·2019-08-28 18:18
閱讀 3240·2019-08-26 13:21
閱讀 797·2019-08-26 12:02