是否可以在nodejs中倒回文件描述符游标?
Is it possible to rewind a file descriptor cursor in nodejs?
这是我在一个完美的世界里会做的:
fs.open('somepath', 'r+', function(err, fd) {
fs.write(fd, 'somedata', function(err, written, string) {
fs.rewind(fd, 0) //this doesn't exist
})
})
这是我当前的实现:
return async.waterfall([
function(next) {
//opening a file descriptor to write some data
return fs.open('somepath', 'w+', next)
},
function(fd, next) {
//writing the data
return fs.write(fd, 'somedata', function(err, written, string) {
return next(null, fd)
})
},
function(fd, next) {
//closing the file descriptor
return fs.close(fd, next)
},
function(next) {
//open again to reset cursor position
return fs.open('somepath', 'r', next)
}
], function(err, fd) {
//fd cursor is now at beginning of the file
})
我试图重置位置而不关闭fd
使用:
fs.read(fd, new Buffer(0), 0, 0, 0, fn)
但是这会抛出Error: Offset is out of bounds
有没有一种方法来重置光标而不做这个可怕的hack?
/e: offset is out of bounds错误来自于这个异常。很容易通过将缓冲区大小设置为1来修复,但它不会倒回光标。可能是因为我们要求函数什么都不读取
今天,答案是它不在核心中,并且它不能用纯javascript添加。
有一个扩展node-fs-ext,它增加了一个seek
函数来移动fd光标。这是在c++中完成的
相关的Stackoverflow问题
NodeJS v6.5.0有createReadStream方法,它接受一个选项数组。这些选项中包括start
和end
属性。这些属性分别决定从和到哪个字节应该被读取。
因此,如果您将start
设置为0
,它将从第一个字节读取文件。在这种情况下,如果将end
设置为空,将导致流一直读取文件,直到文件的末尾。
例如:
fs.createReadStream('myfile.txt', {start: 0})
使用此读流将允许您读取整个文件
-
fs.open
获取fd -
fs.write(fd, string, position)
-
fs.close(fd)
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 正在SharePoint 2013母版页中添加JQuery移动文件
- Angular 2-我如何使我的index.html文件的标题和关键字和描述的元标签是动态的
- 未找到Lodash文件,但它's在index.html中正确列出,并且位于所描述的目录中
- 节点.js文件描述符如何工作
- 将行添加到文件时,如何使用单个文件描述符或流检测和读取它们
- 描述未定义,我的配置文件无法在量角器上运行
- 使用Javascript编写html代码并更改文件和描述
- 如何使用PHP Ajax上传多个文件,多个文件描述和插入数据库
- 每个文件强制执行一个描述
- 使用TypeScript描述符文件的方法,比如Knockout.d.ts
- 是否可以在nodejs中倒回文件描述符游标?