- Node.js全程實例
- 李柯泉編著
- 906字
- 2020-01-20 14:59:55
3.3 創(chuàng)建與刪除文件硬鏈接
鏈接是對文件的引用,硬鏈接只能引用同一系統(tǒng)中的文件。當移動或刪除原始文件時,硬鏈接不會被破壞,因為它所引用的是文件的物理數(shù)據(jù)而不是文件在文件結(jié)構(gòu)中的位置。硬鏈接的文件不需要用戶有訪問原始文件的權限,也不會顯示原始文件的位置,這樣有助于文件的安全。
文件系統(tǒng)模塊提供了fs.link()、fs.unlink()、fs.linkSync()、fs.unlinkSync()四個方法來完成創(chuàng)建與刪除文件硬鏈接的操作。其中,fs.linkSync()與fs.unlinkSync()是同步方式的一組方法,而fs.link()與fs.unlink()是異步方式的一組方法。
下面介紹以同步方式創(chuàng)建文件硬鏈接的代碼實例。
【代碼3-3】(詳見源代碼目錄ch03-node-fs-link-sync.js文件)



【代碼分析】
? 為了測試創(chuàng)建與刪除文件硬鏈接的操作,先在代碼文件目錄中新建一個“txtlink”子目錄,并新建一個名稱為“l(fā)inkSync.txt”的文本文件;同時,通過fs.linkSync()方法創(chuàng)建的硬鏈接“l(fā)inkSyncNew.txt”也將存放在該目錄中。
? 第25行和第26行代碼聲明了兩個變量(srcpath和dstpath),分別定義為原始文本文件“l(fā)inkSync.txt”和將要創(chuàng)建硬鏈接“l(fā)inkSyncNew.txt”的路徑。
? 第31行代碼通過fs.linkSync()方法創(chuàng)建了原始文本文件“l(fā)inkSync.txt”的硬鏈接“l(fā)inkSyncNew.txt”。
? 第42~70行代碼通過spawn()方法查看了“txtlink”子目錄的文件信息。關于這段代碼中所使用到的功能模塊會在后續(xù)章節(jié)中詳細介紹,讀者可先忽略。
在控制臺中運行該Node程序,具體的輸出內(nèi)容如圖3.3所示。
如圖3.3所示,第16行代碼輸出的原始文件“l(fā)inkSync.txt”的內(nèi)容(文本內(nèi)容為fs.linkSync())與第37行代碼輸出的硬鏈接文件“l(fā)inkSyncNew.txt”的內(nèi)容是完全一致的,這說明fs.linkSync()方法執(zhí)行的創(chuàng)建硬鏈接文件的操作成功完成了。
接下來介紹以同步方式刪除文件硬鏈接的方法。其實,【代碼3-3】中所注銷的第39~41行代碼就是以同步方式刪除文件硬鏈接的操作,只要撤銷注銷這3行代碼就可以了。

圖3.3 創(chuàng)建文件硬鏈接的方法(同步版本)
【代碼3-4】(詳見源代碼目錄ch03-node-fs-link-sync.js文件)
39 console.log('fs.unlinkSync() Start...'); 40 fs.unlinkSync(dstpath); 41 console.log('fs.unlinkSync() Done.');
【代碼分析】
? 第40行代碼通過fs.unlinkSync()方法執(zhí)行了刪除硬鏈接文件的操作。
再次在控制臺中運行該Node程序,具體的輸出內(nèi)容如圖3.4所示。

圖3.4 刪除文件硬鏈接的方法(同步版本)
如圖3.4所示,第40行代碼調(diào)用fs.unlinkSync()方法(同步方式)成功執(zhí)行了刪除文件硬鏈接的操作。
另外,結(jié)合本代碼實例的運行結(jié)果來看,使用fs.linkSync()方法(fs.link()方法相同)創(chuàng)建的文件硬鏈接實際上是創(chuàng)建原始文件的新副本,而不是文件的符號鏈接。關于創(chuàng)建文件符號鏈接的方法,將在下一節(jié)進行介紹。
- 深入淺出數(shù)據(jù)科學:Python編程
- Java EE 6 企業(yè)級應用開發(fā)教程
- 跟小海龜學Python
- Flux Architecture
- SSM輕量級框架應用實戰(zhàn)
- HTML5 APP開發(fā)從入門到精通(微課精編版)
- Machine Learning in Java
- JavaScript應用開發(fā)實踐指南
- R Data Science Essentials
- Ext JS 4 Plugin and Extension Development
- Python預測分析與機器學習
- TypeScript圖形渲染實戰(zhàn):2D架構(gòu)設計與實現(xiàn)
- RESTful Web API Design with Node.js(Second Edition)
- 少年小魚的魔法之旅:神奇的Python
- HTML5+jQuery Mobile移動應用開發(fā)