2012-05-23 51 views
-1

請問您可以告訴如何將文件最大大小設置爲100字節。如果我嘗試寫入更多數據超過100字節ntwritefile()應該拋出錯誤ERROR_NOT_ENOUGH_MEMORY如何在C++中將文件大小設置爲100字節?

能否請你建議我,一個WIDNOWS API設置100個字節(或一個固定的大小)文件?

在我們的產品,ntwritefile()失敗,錯誤ERROR_NOT_ENOUGH_MEMORY。我想了解,在哪些場景中,我們會得到這個錯誤。

+2

據我所知,你不能讓系統來限制文件的大小。 –

+1

爲什麼Windows會提供這樣的事情?配置文件的大小,當然,但單個文件的大小? – Arafangion

+1

有沒有理由不能在你的代碼中自己檢查它? –

回答

1

在Windows中,這將是這樣的:

  1. 的CreateFile
  2. WriteFile

就是這樣。

+0

是的,但如果寫入超過100個字節(通過此過程或其他過程),則不會「失敗」。 – 2012-05-23 07:16:19

+0

在提示符上,您也可以使用「fsutil file createnew」(http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/fsutil.mspx?mfr=true)創建一個固定大小的文件。作爲Joachim Pileborg說的 – mox

+0

,這取決於你在代碼中設置大小。 – mox

0

你想創建一個文件,是100個字節?或者是否要將文件大小限制爲100個字節,這意味着如果文件超過100個字節,文件上的其他寫入操作將不起作用?

如果它是第一個,那麼您可以使用CreateFileWriteFile並將緩衝區大小限制爲100字節。

如果它的第二個..然後我不認爲它可能...

+0

感謝您的回答蛇!我對第二個有興趣 – siva

+0

那麼這個文件是由你的應用程序管理還是你需要在全球範圍內的限制。我的意思是,即使在使用第三方文本編輯器寫入文件的情況下,您是否也希望存在限制? –

2

您可以創建一個大小爲100字符的緩衝區,完成它的緩衝區寫入文件。

#include <stdio.h> 
#include <memory.h> 


int main(int argc, char* argv[]) 
{ 
    char buffer[100]; 

    //assign values 
    memset(buffer, 'A', 100); 
    buffer[5]='@'; 

    FILE * pFile; 
    pFile = fopen ("buffer.100" , "wb"); 
    fwrite (buffer, 1, sizeof(buffer) , pFile); 
    fclose (pFile); 

    return 0; 
} 
+0

我知道這是簡單的C而不是C++,但它完成了工作。 –

+1

他不想創建一個100字節的文件,他想確保他不能寫入超過100個字節的文件。 –

+0

siva詢問有關將文件設置爲100字節(或固定大小)的問題,上面的代碼可以做到這一點,而不僅僅是在Windows中。 –

0

你的最好的辦法,建築來說,如下:

  1. 要怎樣讀取和寫入到有問題的文件。
  2. 創建一個界面,通過一個託管類提供這些相同的設施。 API將盡可能地與已有的相同。
  3. 添加代碼,封裝在您的管理器類跟蹤緩衝區的大小爲你寫的,也可能緩衝您在文件所需的100個字節。然後,代碼可以以任何欺騙的方式檢測和處理溢出情況(即,如果這是你想要的,拋出異常)。
0

使用SetFilePointer,然後SetEndOfFile。在SetEndOfFile之後別忘了CloseHandle

相關問題