在Windows上在FAT MicroSD上創建大文件的最快方法是什麼?直到現在,所有的解決方案都顯示了產生稀疏文件的方法,但是我需要預先分配所有扇區(因爲它將被數據記錄器使用)。目前我只寫了幾個千兆字節的零,但這需要很長時間。在FAT上快速創建大文件
編輯:它似乎符合FAT規範Windows將不得不分配所有的數據塊並零初始化它們,因爲「羣集鏈」FAT。所以我想我是在問不可能的事情,但是我會留下這個問題以防萬一。
在Windows上在FAT MicroSD上創建大文件的最快方法是什麼?直到現在,所有的解決方案都顯示了產生稀疏文件的方法,但是我需要預先分配所有扇區(因爲它將被數據記錄器使用)。目前我只寫了幾個千兆字節的零,但這需要很長時間。在FAT上快速創建大文件
編輯:它似乎符合FAT規範Windows將不得不分配所有的數據塊並零初始化它們,因爲「羣集鏈」FAT。所以我想我是在問不可能的事情,但是我會留下這個問題以防萬一。
最快的將是直接訪問FAT控制數據的扇區,並分配一個足夠長的簇鏈,併爲該文件創建一個目錄項並使其指向該鏈的第一個簇。這避免了寫入千兆字節的零。如果你從空的預格式化媒體開始,並且不需要保存任何先前寫入的數據,這應該是一項微不足道的任務。您可以對控制數據區域的內容進行硬編碼並避免FAT解析。
我不記得您在Windows中如何獲得這樣的低級/原始訪問。我想你只需要打開設備卷(或物理設備),然後將其作爲原始數據訪問。請參閱MSDN上CreateFile()的說明。在Vista +上,您的應用可能需要具有特殊訪問權限。
亞歷克斯說得對,它是執行時間最快的方式,但寫入FAT不是微不足道的。我的理解是,你將不得不處理部門規模和分散。這是LG電子的open source FAT32 implementation。
關於您需要編寫的代碼很少的最快方法是option 1 in this Raymond Chen blog post。
簡而言之:
獎勵:它適用於NTFS也(我用的是一個應用程序我米工作)。
應該可以創建文件(使用CreateFile),然後使用SetEndOfFile設置文件的大小。不確定Windows是否初始化扇區。如果我沒有記錯,它不在Windows XP下的FAT32分區上。
也許這將是有益的嘗試fsutil:
FSUTIL文件[createnew](文件名)(長度)