我缺少的东西或做通常的文件随机访问方法的node.js的标准文件I / O模块缺乏类似物?
-
seek()
/fseek()
-
tell()
/ftell()
一个人如何读取大文件随机大小固定的记录中节点没有这些?
我缺少的东西或做通常的文件随机访问方法的node.js的标准文件I / O模块缺乏类似物?
seek()
/ fseek()
tell()
/ ftell()
一个人如何读取大文件随机大小固定的记录中节点没有这些?
tell
不大,但它是相当罕见的还不知道在一个文件中,你所在的位置,或者没有办法来跟踪自己。
seek
经由间接暴露position
的参数fs.read
和fs.write
。 当给出的说法将寻求到该位置执行其操作之前,如果null
,它将使用它有任何以前的位置。
节点没有这些内置的,你可以得到最接近的是使用fs.createReadStream
与start
参数来启动从偏移读取,(通过在现有的fd
,以避免重新打开文件)。
http://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options
我想这createReadStream一遍又一遍地创建新的文件描述符。 我更喜欢同步版本:
function FileBuffer(path) {
const fd = fs.openSync(path, 'r');
function slice(start, end) {
const chunkSize = end - start;
const buffer = new Buffer(chunkSize);
fs.readSync(fd, buffer, 0, chunkSize, start);
return buffer;
}
function close() {
fs.close(fd);
}
return {
slice,
close
}
}
用这个:
fs.open(path, flags[, mode], callback)
那么这样的:
fs.read(fd, buffer, offset, length, position, callback)
阅读详细内容:
https://nodejs.org/api/fs.html#fs_fs_read_fd_buffer_offset_length_position_callback