はじめまして。
UNIXでは、サイズの大きなファイルを扱うときに fopen64()等を
使いますが、Windowsでは、この関数は用意されていないようです。
Windowsで4GBを超えるファイルを扱うときは、どうすればよいのでしょうか。
(環境は、Windows2000 + NTFS です)
何も考えずに、fopen()を使えばよいのでしょうか。
それとも、ヘルプに載っている _lseeki64() 関数を使うようにして、
全て低水準の関数に置き換えるのでしょうか。
詳しい方いましたら、よろしくお願い致します。
単純にfopenでよいと思いますが。
そもそも,fpos_tは64bitの位置情報ですし。
#_fseeki64, _ftelli64なんてものもあったりする(未公開?)
YuOさん、ありがとうございました。
もう少し調べて(理解して)から、実際にテストしてみます。
fopen()やfread()/fwrite()はわかりませんが
fseek()はうまく動作しないのを確認したことがあります
fseek()だと2Gか2G-1かそのあたりが限界でした
WindowsのAPIの
CreateFile()/ReadFile()/WriteFile()/SetFilePointer()<-fseekにあたる
で操作できると思います
kuさん、ありがとうございました。
元々、fseek()は使っていないプログラムだったので、
簡単なテストプログラムに置き換えて試したところ、
10GBのファイルが作成できました。
最初からテストしても良かったのですが、この件に関する
明確な記述がどこにも見つからなかったので、
質問させていただきました。
ツイート | ![]() |