ist das, was ich tun würde, in einer perfekten Welt:Ist es möglich, einen Dateideskriptor-Cursor in nodejs zurückzuspulen? Diese
fs.open('somepath', 'r+', function(err, fd) {
fs.write(fd, 'somedata', function(err, written, string) {
fs.rewind(fd, 0) //this doesn't exist
})
})
Dies ist meine aktuelle Implementierung:
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
})
Ich habe versucht, die Position zurückgesetzt werden, ohne dass die fd
Schließen unter Verwendung:
fs.read(fd, new Buffer(0), 0, 0, 0, fn)
aber dies wirft Error: Offset is out of bounds
.
Gibt es eine Möglichkeit, den Cursor zurücksetzen, ohne diese schrecklichen hack?
/e: Der Offset ist außerhalb der Grenzen Fehler kommt von this exception. Leicht zu beheben, indem eine Puffergröße auf 1 gesetzt wird, aber der Cursor nicht zurückgespult wird. Vielleicht, weil wir die Funktion bitten, nichts zu lesen.
Warum verwenden Sie nicht das Argument "Position" Funktionen lesen/schreiben? –
Ich brauche sie nicht, ich benutze [diese Funktion] (https://nodejs.org/api/fs.html#fs_fs_write_fd_data_position_encoding_callback) zu schreiben und 'Position' Argument ist optional. Ich möchte nur einige Daten in eine Datei schreiben und einen Dateideskriptor mit einem Cursor an der Position 0 zurückgeben. – soyuka