- NodeJs的介绍及使用
- Node.js核心模块概览
- NodeJs-Assertion Testing
- NodeJs-Asynchronous Context Tracking
- NodeJs-async_hooks
- NodeJs-Buffer
- Node.js- C++ Addons
- Node.js-C++ Addons Node-API
- NodeJs-C++ Embedder API
- Node.js-Child Process
- NodeJs-Cluster
- Node.js-命令行选项
- Node.js-Console
- Node.js-Corepack
- Node.js-Crypto
- NodeJs-Debugger
- NodeJs-Diagnostics Channel
- NodeJs-DNS
- NodeJs-Domain
- NodeJs-Errors
- NodeJs-Events
- NodeJs-File system(一)
- NodeJs-File system(二)
- NodeJs-File system(三)
- NodeJs-Globals
- NodeJs-HTTP
- NodeJs-HTTP/2
- NodeJs-HTTPS
- NodeJs-Inspector
- NodeJs-Internationalization
- NodeJs-Modules CommonJS modules、ECMAScript modules、node:module、Packages、TypeScript
- NodeJs-Net
- NodeJs-OS
- NodeJs-path
- NodeJs-Performance Hooks
- NodeJs-Permissions
- NodeJs-process
- NodeJs-punycode
- Node.js-querystring
- NodeJs-Readline
- NodeJs-REPL
- NodeJs-Report
- NodeJs-Single Executable Applications
- NodeJs-SQLite
- NodeJs-Stream
- NodeJs-String Decoder
- NodeJs-Test runner
- NodeJs-Timers
- NodeJs-TLS/SSL
- NodeJs-Trace events
- NodeJs-TTY
- NodeJs-UDP/datagram
- NodeJs-URL
- NodeJs-Utilities
- NodeJs-V8
- NodeJs-VM
- NodeJs-WASI
- NodeJs-Web Crypto API
- NodeJs Web Streams API
- NodeJs Worker threads
- NodeJs-Zlib
- NodeJs-Single Executable Applications
NodeJs-File system(三)
class File System在 Node.js 的文件系统(fs
)模块中,文件的读取和操作通常是基于路径(path
)的。path
通常是一个字符串,表示文件或目录在文件系统中的位置。但是,当处理 URL 文件路径(即以 file://
协议开头的 URL 路径)时,需要将 URL 转换为本地文件路径。
1. 使用 URL 路径读取文件
Node.js 提供了直接使用 URL 对象进行文件操作的方法。通过使用 fs
模块,可以读取、写入和操作文件。fs
模块的许多方法都可以接受 URL
对象(代表 file://
URL)。
使用 file://
URL 读取文件
以下是如何使用 URL 读取文件内容的示例:
const fs = require('fs');
const { URL } = require('url');
// 创建一个 file:// URL 对象
const fileUrl = new URL('file:///path/to/file.txt');
// 异步读取文件
fs.readFile(fileUrl, 'utf8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
return;
}
console.log('File content:', data);
});
同步读取文件
你也可以同步读取文件内容:
const fs = require('fs');
const { URL } = require('url');
const fileUrl = new URL('file:///path/to/file.txt');
try {
const data = fs.readFileSync(fileUrl, 'utf8');
console.log('File content:', data);
} catch (err) {
console.error('Error reading file:', err);
}
2. URL 路径和 fs
方法的兼容性
以下是一些常用的 fs
方法和它们是否支持 URL 对象作为路径参数:
fs.readFile(path[, options], callback)
: 支持 URL 对象。fs.readFileSync(path[, options])
: 支持 URL 对象。fs.writeFile(path, data[, options], callback)
: 支持 URL 对象。fs.writeFileSync(path, data[, options])
: 支持 URL 对象。fs.appendFile(path, data[, options], callback)
: 支持 URL 对象。fs.appendFileSync(path, data[, options])
: 支持 URL 对象。fs.unlink(path, callback)
: 支持 URL 对象。fs.unlinkSync(path)
: 支持 URL 对象。fs.mkdir(path[, options], callback)
: 支持 URL 对象。fs.mkdirSync(path[, options])
: 支持 URL 对象。fs.rmdir(path[, options], callback)
: 支持 URL 对象。fs.rmdirSync(path[, options])
: 支持 URL 对象。
注意: 对于需要文件路径作为参数的方法(如 fs.watch()
和 fs.createReadStream()
),URL
对象也是可以接受的。
3. 使用 fs
事件与 URL 路径
在 Node.js 中,fs
模块的某些方法,如 fs.watch()
,可以用来监听文件或目录的更改。这个方法也支持 URL 对象。
监听文件变化事件
fs.watch()
可以监视文件或目录的变化,这对于实现实时监控文件系统事件非常有用。
使用 file://
URL 监听文件变化:
const fs = require('fs');
const { URL } = require('url');
const fileUrl = new URL('file:///path/to/file.txt');
const watcher = fs.watch(fileUrl, (eventType, filename) => {
console.log(`File ${filename} changed with event type ${eventType}`);
});
watcher.on('error', (err) => {
console.error('Error watching file:', err);
});
// 关闭监视器
// watcher.close();
fs.watch()
方法
-
fs.watch(filename[, options], listener)
:filename
: 字符串或URL
对象,表示要监视的文件或目录。options
: 对象(可选),可设置:persistent
: 布尔值,表示是否持续监视(默认值为true
)。recursive
: 布尔值,表示是否递归监视子目录(仅适用于 macOS 和 Windows)。encoding
: 字符串,指定filename
参数的编码(默认是'utf8'
)。
listener
: 回调函数,格式为(eventType, filename)
,当文件或目录发生变化时调用。
-
事件类型:
change
: 文件内容发生变化时触发。rename
: 文件重命名、移动或删除时触发。
4. 小结
在 Node.js 中,fs
模块与 URL 对象(特别是 file://
URL)兼容性良好,允许开发者直接使用 URL 对象来操作文件和目录。无论是读取文件、写入文件,还是监听文件系统事件,都可以直接使用 URL 对象,这为跨平台和网络文件系统的开发提供了更大的灵活性和方便性。了解如何利用 URL 对象与 fs
模块结合,可以大大简化文件系统操作代码,特别是在涉及文件路径的跨平台应用中。
评论区
评论列表
{{ item.user.nickname || item.user.username }}