全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2485
推到 Plurk!
推到 Facebook!

在32bit系統下,寫入超過4G的檔案

尚未結案
1047845
一般會員


發表:1
回覆:0
積分:0
註冊:2016-04-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2016-04-08 09:50:28 IP:218.210.xxx.xxx 訂閱
各位大大好小弟目前使用C builder6的環境,透過fstream寫入4G以上的二進制檔案,但在超過4G時系統會當掉(硬碟格式已經改為NTFS),搜尋相關問題後發現好像是需要64bit函式才能寫入超過4G的檔案?所以想請問各位大大該如何在32bit的系統下使用64bit函式並寫入超過4G的二進制檔案或是有其他方法可以在32bit系統下,寫入超過4G的檔案麻煩各位大大了,謝謝
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2016-04-08 12:03:42 IP:59.120.xxx.xxx 未訂閱
不知道這功能行不行
#include <streambuf>
__int64_t temp=std::numeric_limits::max();
編輯記錄
GrandRURU 重新編輯於 2016-04-08 12:04:16, 註解 無‧
GrandRURU 重新編輯於 2016-04-08 12:05:11, 註解 無‧
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2016-04-08 23:18:06 IP:61.228.xxx.xxx 訂閱
估計 cb 的 STL lib 不會太新太好用。所以,若是在 windows 上實作,則參考以下的 WIN32 API 比較妥。 若一定要用 C++ 本身的 lib,我認為 vc++ 也只有2013版才ok。cb 應該沒機會吧… 有人測出來可以來分享一下。

windows api 的寫法如下: (參考 http://zhidao.baidu.com/question/460588024.html )
HANDLE file = CreateFile("d:\\big.bin", GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
    if (file != INVALID_HANDLE_VALUE)
    {
        DWORD cb;
        BYTE *d = new BYTE[512*1024*1024];
        for (int i=0; i<20; i  )
        {
            WriteFile(file, d, 512*1024*1024, &cb, NULL);
        }
        delete []d;
        CloseHandle(file);
    }
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-04-27 6:21:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!