Как вставить текст в произвольное место в файле с помощью createWriteStream в NodeJS?
Подскажите, в API к createWriteStream есть option > {start: position, flags: "a"} но заменяется все содержимое в файле а не вставляется в определенное место.
Вставляю данные с помощью stream.write('Данные которые нужно вставить')
Александр Дегтярев, start - чтобы записывать с определённой позиции (весь нижележащий текст при этом будет покоцан), 'a' - чтобы переместиться в позицию, равную размеру файла (в конец). Как они вместе уживаются и зачем их вместе пихать - непонятно, никто в здравом уме так делать не будет (поведение в данном случае не документировано и не гарантируется, что оно будет одинаковым в разных версиях и не зависеть от положения звёзд).
SagePtr, вот я и поставил позицию с которой нужно начать запись, однако (и с флагом a и без него) просто переписывается весь файл. Скажите как сделать так чтобы с данной позиции записывалось т что мне нужно. Я так понимаю то что будет ДО этой позиции должно остаться не тронутым?
Александр Дегтярев, открывайте в режиме r+.
Причём это явно указано в документации, неужели нельзя было с ней ознакомиться?
options may also include a start option to allow writing data at some position past the beginning of the file, allowed values are in the [0, Number.MAX_SAFE_INTEGER] range. Modifying a file rather than replacing it may require a flags mode of r+ rather than the default mode w. The encoding can be any one of those accepted by Buffer.
Александр Дегтярев, только что проверил, как под Windows, так и под Linux всё прекрасно работает. Записывает в указанную позицию, не перетирает содержимое файла.