GBファイル読み込み


hide  2007-07-05 23:15:31  No: 99162

OS:WindowsXP
開発言語:VB 6.0

お世話になります。

2GBのファイルをリードしたいのですが、以下のようにするとバッファがオーバーフローしてしまいます。

    fn = FreeFile()
    
    Open "C:\2GB.txt" For Binary As #fn
        ReDim buf(LOF(fn) - 1)
        Get #fn, , buf
    
    Close #fn

できれば512バイトずつリードしたいのですが、どのようにしたらよいでしょうか。

宜しくお願いします。


KG  2007-07-06 06:07:35  No: 99163

私の仕事でもGBファイルを扱うのですが、
大きいファイルにはADODB.Streamを使ったりしてます。


  2007-07-07 05:54:12  No: 99164

Getの第2引数を使って

    Dim buf(512) as Byte
    Dim Cnt as Long

    fn = FreeFile()

    Open "C:\2GB.txt" For Binary As #fn
    Do
        Get #fn, Cnt * 512 +1 , buf
        Cnt = Cnt + 1

        EOFならExit Do
    Loop
    Close #fn
    
とか
手元に環境がないので、ファイルの最後で
取得できるサイズが512でなかった場合などは
調べてみてください。


大吉末吉  2007-07-08 23:47:11  No: 99165

> 開発言語:VB 6.0
> 2GBのファイルをリードしたいのですが、以下のようにするとバッファがオーバーフローしてしまいます。

WindowsAPIを使うとか・・・

「How To Seek Past VBA's 2GB File Limit」
http://support.microsoft.com/kb/189981/en-us


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

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






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