В node.js нет эквивалента ftell()
или fseek()
, и я не совсем уверен, почему. Вместо этого вы обычно указываете положение, в котором вы хотите читать или писать, когда вы читаете или пишете, с помощью fs.read()
или fs.write()
. Если вы хотите просто записать кучу данных последовательно или хотите использовать буферизованную запись, вы, скорее всего, будете использовать поток, который буферизует и последовательности для вас.
Вместо этого, если вы хотите знать, куда будут добавляться данные Вы можете получить текущую длину файла, а затем использовать эту текущую длину файла, чтобы узнать, находитесь ли вы в начале файла после его открытия для добавления.
Вот код node.js, который делает что-то похожее на ваш C код.
const fs = require('fs');
async function myFunc() {
let handle = await fs.promises.open("test.txt");
try {
const {size} = await handle.stat();
await handle.appendFile(size ? "Subsequent line\n" : "First line\n");
} finally {
await handle.close();
}
}
И, если вы трижды назовете это так:
async function test() {
await myFunc();
await myFunc();
await myFunc();
}
test();
Вы получите желаемые три строки в файле:
First line
Subsequent line
Subsequent line