![](/img/trans.png)
[英]Node.js : how to know if a value is in a collection of a MongoDB database?
[英]How to know file position in Node.js? - return value of lseek
似乎沒有“本機”方式。 大概是因為
在同一個文件上多次使用 fs.write***()而不等待回調是不安全的。
對於緩沖的 IO,使用getCurrentPosition
之類的東西更是如此。 在write***
或read***
之后但在調用回調之前它應該返回什么?
但是您可以嘗試在bytesRead
和bytesWritten
的幫助下自己跟蹤當前的 position。 如果是流,則有chunk.length
,但不要忘記字符串的編碼。
作為旁注......你寫道:
考慮新功能我認為這可能是一個有用的信息
如果沒有人要求它,而您自己不確定它可以用於什么,那么我認為練習 YAGNI 原則是一個好主意。
我強烈懷疑,在低級別,參數 position 在讀取或寫入操作之前通過 lseek 調用處理,但是 lseek 的返回值呢?
正如Ben Noordhuis (libuv 維護者)所說,它沒有在后台使用:
lseek() 對於並發讀取器或寫入器是不可預測的。 libuv 的方式是使用位置讀寫(uv_fs_read() 和 uv_fs_write() 的偏移量參數。)
本期關於 node.js GitHub談論他們如何管理 position 參數以將數據讀取和寫入文件。
Node.js 有沒有辦法獲得相同的信息?
接受的答案很好地解釋了如何做到這一點:您需要跟蹤讀取和寫入的字節。
在 Node.js 中,您可以使用fs.read()
和fs.write()
。
Node 可以通過使用_filename
和_dirname
變量告訴您它在文件系統中的哪個位置工作。 filename 變量提供當前正在執行的文件的絕對路徑; dirname 提供正在執行的文件所在的工作目錄的絕對路徑。 兩個變量都不必從任何模塊導入,因為每個模塊都是標准提供的。
下面是一個使用這兩個變量的簡單示例:
console.log("這個文件是" +__filename
); console.log("它位於 " +__dirname
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.