クロスプラットフォーム スクリプトの一部を node.js に移植することを考えています。これは、一部は node.js を学習するためであり、一部は最近 JavaScript に慣れているためであり、一部は他のスクリプト言語での大きなファイルのサポートに関する問題のためです。
一部のスクリプト言語は、32/64 ビット OS またはプロセッサで実行されているかどうか、または特定のフラグを使用して特別にコンパイルする必要があるかどうかなどに応じて、大きなファイル オフセットを不完全にサポートしているようです。
とにかくnode.jsを試してみたいのですが、グーグルでは、64ビットオフセットを持つ大きなファイルのサポート(またはライブラリ/フレームワークのサポートなど)について、どちらの方法もあまり見つけられません。
これは、少なくとも JavaScript の基本的な整数サポートにある程度依存することを認識しています。JavaScript の Max Int とは何ですか?を正しく読んだ場合 Number が精度を落とさずに到達できる最大の整数値は? JavaScriptは整数に対しても内部的に浮動小数点を使用しているようです。
最大の正確な積分値は 2 53です
次に、node.js はサーバー向けであり、サーバーは大きなファイルのサポートを期待する必要があります。
node.js は 64 ビットのファイル オフセットをサポートしていますか?
アップデート
_LARGEFILE_SOURCE
およびビルド フラグにもかかわらず、_FILE_OFFSET_BITS
これを必要とするプロジェクトの移植を開始したので、それはfs.read(files.d.fd, chunk, 0, 1023, 0x7fffffff, function (err, bytesRead, data)
成功するが で0x80000000
失敗することがわかりましたEINVAL
。これは、v0.6.11
32 ビット Windows 7 で動作するバージョンです。
今のところ、これが のみの制限なのかfs
、node.js のバグなのか、Windows ビルドのみの問題なのかはわかりません。
すべてのプラットフォームのすべてのコア モジュールの node.js で、31 ビットを超えるファイル オフセットが機能することを意図していますか?