2010-11-05 62 views
5

我正在寫一個應用程序,它會進行數百萬次計算,並將結果存儲在光盤中的許多文件中。我可能有數千個不同大小的文件,並存儲直到他們進行分析。在此之後,我將只保留其中的幾個,刪除其他人並重新開始整個過程​​。爲了我的應用程序,這個工程很好,但現在我開始擔心我會像瘋了一樣將我的光盤碎片化(我的光盤使用NTFS)。定期對磁盤驅動器進行碎片整理不在我的控制之下,因爲我不是機器的管理員。如何避免硬盤碎片?

有什麼辦法避免光盤碎片?

回答

1

試着製作自己的文件格式來收集幾個文件在一起?

4

碎片小文件通常不是問題。 如果文件被讀取一次並不重要 - 如果一個大文件存在很多部分,並且磁盤必須做大量的搜索來獲取所有文件,那麼這只是真正的時間問題。

顯而易見的解決方案不是寫很多小日誌文件,要麼將它們合併成一個大文件 - 要麼使用數據庫,這就是它們的用途。

3

使用一個數據庫,它是爲這種事情做的。

1

我個人認爲,作爲一名程序員,您不應該擔心操作系統級別的問題,例如太多,除非您正在開發嵌入式平臺。 (例如,你怎麼知道目標操作系統的下一個版本不會爲你解決問題?)

但是,如果使用數據庫不是一個選項(它看起來像一個非常明顯的解決方案那麼說)你可以把數據寫入更少,更大的文件。

0

如何創建一個不同的分區供您的程序使用?然後你可以在分區上做任何你想要的東西(D :),然後在應用程序的關鍵運行之間吹掉它(而不是浪費時間進行碎片整理)。更好的是,只需將應用程序寫入外部驅動器,使其完全遠離主系統即可。

+0

請閱讀http://meta.stackexchange.com/questions/28416/what-is-the-policy-on-signatures-and-links-in-answers-for-so-so-questions。另外,正如meta的其他地方指出的那樣,「嗯,你知道答案中的鏈接是沒有意義的,對不對?」 – 2010-11-05 16:55:01

1

如果您的文件小於4096字節,NTFS格式化分區上將不會有任何碎片。如果是4KB,NTFS的簇大小,即使是1字節的文件也會在磁盤上使用4KB。只要看看任何文件的文件屬性。磁盤上有大小和大小的屬性。