4GBを超えるファイルの扱い方は?

解決


KAGOME  2004-10-22 03:49:00  No: 54844

はじめまして。

UNIXでは、サイズの大きなファイルを扱うときに fopen64()等を
使いますが、Windowsでは、この関数は用意されていないようです。
Windowsで4GBを超えるファイルを扱うときは、どうすればよいのでしょうか。
(環境は、Windows2000 + NTFS です)
何も考えずに、fopen()を使えばよいのでしょうか。
それとも、ヘルプに載っている _lseeki64() 関数を使うようにして、
全て低水準の関数に置き換えるのでしょうか。

詳しい方いましたら、よろしくお願い致します。


YuO  2004-10-22 11:00:37  No: 54845

単純にfopenでよいと思いますが。
そもそも,fpos_tは64bitの位置情報ですし。
#_fseeki64, _ftelli64なんてものもあったりする(未公開?)


KAGOME  2004-10-22 19:54:45  No: 54846

YuOさん、ありがとうございました。
もう少し調べて(理解して)から、実際にテストしてみます。


ku  2004-10-23 00:48:30  No: 54847

fopen()やfread()/fwrite()はわかりませんが
fseek()はうまく動作しないのを確認したことがあります
fseek()だと2Gか2G-1かそのあたりが限界でした

WindowsのAPIの
CreateFile()/ReadFile()/WriteFile()/SetFilePointer()<-fseekにあたる
で操作できると思います


KAGOME  2004-10-23 01:14:47  No: 54848

kuさん、ありがとうございました。

元々、fseek()は使っていないプログラムだったので、
簡単なテストプログラムに置き換えて試したところ、
10GBのファイルが作成できました。

最初からテストしても良かったのですが、この件に関する
明確な記述がどこにも見つからなかったので、
質問させていただきました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加