FileReader物件

了解什麼是FileReader物件以及如何使用它 FileReader物件以非同步方式讀取檔案的內容。 它提供了四個讀取方法,可以用來開始讀取過程: readAsText():以文字字串形式讀取內容 readAsDataURL():將內容以數據URL形式讀取 readAsArrayBuffer():將內容讀取為ArrayBuffer readAsBinaryString():以二進制字串形式讀取內容 另外還有一個abort()方法,用來停止任何的讀取操作。 讀取檔案是非同步的,該物件還提供了一些事件,我們可以利用這些事件來追蹤操作的進度: onload:當讀取成功結束時觸發 onloadstart:當讀取開始時觸發 onprogress:當讀取進行中時觸發 onloadend:無論讀取是否成功結束都會觸發 onerror:當發生錯誤時觸發 onabort:當讀取被中止時觸發 一旦讀取操作完成,FileReader物件的result屬性將包含檔案的內容。 error屬性包含錯誤訊息(如果有錯誤發生),而readyState則包含操作的狀態編號。狀態編號為: 0:未載入任何資料 1:資料載入中 2:載入完成 readAsText() 以文字字串形式載入blob的內容。 以下是一個範例,將文字放入#content元素的內部HTML: //..file is available as a blob const reader = new FileReader() reader.onload = event => { const text = reader.result document.getElementById('content').innerHTML = text } reader.onerror = (e) => { console.error(e) } reader.readAsText(file) 以下是一個範例,當使用input元素上傳文本檔時,讀取檔案內容並將內容打印到控制台: <input type="file" allow="text/*" /> const input = document.querySelector('input') input.addEventListener('change', e => { const reader = new FileReader() reader....

Node fs 模塊

Node.js 的 fs 模塊提供了與文件系統進行交互的功能。 無需安裝,作為 Node 核心的一部分,可以通過 require 來使用: const fs = require('fs') 一旦這樣做了,你就可以訪問它的所有方法,包括: fs.access():檢查文件是否存在,以及 Node 是否可以使用權限訪問該文件。 fs.appendFile():將數據追加到文件中。如果文件不存在,則會創建新的文件。 fs.chmod():更改指定文件的許可權。相關方法有:fs.lchmod(),fs.fchmod() fs.chown():更改指定文件的所有者和群組。相關方法有:fs.fchown(),fs.lchown() fs.close():關閉文件描述符 fs.copyFile():複製文件 fs.createReadStream():創建可讀的文件流 fs.createWriteStream():創建可寫的文件流 fs.link():在文件中創建一個新的硬連接 fs.mkdir():創建一個新的文件夾 fs.mkdtemp():創建一個臨時目錄 fs.open():設置文件模式 fs.readdir():讀取目錄的內容 fs.readFile():讀取文件的內容。相關方法有:fs.read() fs.readlink():讀取符號鏈接的值 fs.realpath():將相對文件路徑指針解析為完整路徑(.,..) fs.rename() :重命名文件或文件夾 fs.rmdir():刪除文件夾 fs.stat():返回文件的狀態。相關方法有:fs.fstat(),fs.lstat() fs.symlink():創建新的符號鏈接 fs.truncate():將指定文件截斷到指定長度。相關方法有:fs.ftruncate() fs.unlink():刪除文件或符號鏈接 fs.unwatchFile():停止監聽文件的變化 fs.utimes():更改文件的時間戳記。相關方法有:fs.futimes() fs.watchFile():開始監聽文件的變化。相關方法有:fs.watch() fs.writeFile():將數據寫入文件。相關方法有:fs.write() 關於 fs 模塊的一個特點是,所有的方法默認都是異步的,但是也可以同步地進行操作,只需在方法名後面添加 Sync。 例如: fs.rename() fs.renameSync() fs.write() fs.writeSync() 這對應用程序的流程有很大的影響。 Node 10 包括對基於 promise 的 API 的實驗性支援。 舉個例子,讓我們來看看 fs.rename() 方法。使用回調函數來使用異步 API: const fs = require('fs') fs.rename('before.json', 'after.json', (err) => { if (err) { return console....

Node.js 簡介

這篇文章是關於 Node.js 的入門指南,Node.js 是一個運行在伺服器端的 JavaScript 執行環境。Node.js 是建立在 Google Chrome V8 JavaScript 引擎之上,主要用於建立網頁伺服器,但不僅限於此。 概述 [Node.js 的最佳特性](#node.js 的最佳特性) 快速 簡單 JavaScript V8 異步平台 大量的函式庫 [一個 Node.js 應用程式範例](#一個 Node.js 應用程式範例) [Node.js 框架和工具](#node.js 框架和工具) Node.js 是一個在伺服器上運行的 JavaScript 執行環境。 Node.js 是開源的、跨平台的,自從在2009年推出以來,它已經變得非常流行,現在在網頁開發中扮演著重要的角色。如果以 GitHub 上的 stars 數量作為流行度指標,擁有58000+ stars就意味著非常受歡迎。 Node.js 運行 V8 JavaScript 引擎,該引擎是 Google Chrome 的核心,而 Node.js 可以利用使 Chrome JavaScript 執行時非常高速的工程師的工作,這使得 Node.js 可以受益於巨大的性能改進和即時編譯。由於這一點,運行在 Node.js 中的 JavaScript 代碼可以非常高效。 Node.js 的應用程式由單個進程運行,不為每個請求創建新的線程。Node.js 的標準庫提供了一組異步 I/O 原語,可以防止 JavaScript 代碼阻塞,通常情況下 Node.js 的庫都是使用非阻塞的範例來編寫,使得阻塞行為成為異常而不是正常行為。 當 Node....

如何在Node.js中檢查文件是否存在

如何使用Node.js的fs模塊來檢查文件系統中是否存在文件。 使用Node.js檢查文件是否存在的方法是使用fs.existsSync()方法: const fs = require('fs') const path = './file.txt' try { if (fs.existsSync(path)) { //文件存在 } } catch(err) { console.error(err) } 這種方法是同步的,意味著它是阻塞的。為了以異步的方式檢查文件是否存在,可以使用fs.access()方法,該方法檢查文件的存在性而不需要打開它: const fs = require('fs') const path = './file.txt' fs.access(path, fs.F_OK, (err) => { if (err) { console.error(err) return } //文件存在 })

异步 vs 同步代码

运行代码同步或异步的区别 您可能听说过Node.js之所以快是因为它为所有昂贵的操作(如网络访问或文件系统)提供了异步API。 拥有异步API意味着什么呢? 如果你预计某个操作可能需要很长时间,那么以异步方式运行它是有意义的,这样其他代码可以同时运行,并且在操作结束时有一个钩子被调用。 这就是为什么Node.js可以处理比PHP或Rails更多的流量而不使用异步库的原因。 大多数传统上不是异步的编程语言现在都有第三方库来实现调用异步代码的方式。 否则,例如在PHP或Python代码中通常会发生的情况是,线程会阻塞,直到同步操作(从网络读取、写入文件等)结束。 如果代码以异步方式运行,CPU不会空闲等待该进程完成,而是可以继续执行其他已排队的任务,直到原始进程准备好继续进行为止。