成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Node.js學(xué)習(xí)之路07——fs文件系統(tǒng)之對(duì)文件或目錄執(zhí)行的其他操作

lordharrd / 3516人閱讀

摘要:如果打開(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);,currfs.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

相關(guān)文章

  • Node.js學(xué)習(xí)之路14——Process進(jìn)程

    摘要:在中,只支持單線(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)...

    darry 評(píng)論0 收藏0
  • Node.js學(xué)習(xí)之路06——fs文件系統(tǒ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...

    用戶(hù)83 評(píng)論0 收藏0
  • Node.js學(xué)習(xí)之路08——fs文件系統(tǒng)之stream流基本介紹

    摘要:中各種用于讀取數(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 將文件部...

    BoYang 評(píng)論0 收藏0
  • Node.js學(xué)習(xí)之路05——fs文件系統(tǒng)文件寫(xiě)入和讀取

    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...

    leanote 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<