2014-01-25 58 views
0

我需要用Delphi編寫一個非常大的文件(大約100-150 mb)。 這個文件將是一個CSV文件或一個SQL文件(用戶可以選擇它)。什麼是用delphi編寫大文件的正確方法

在過去,我總是使用TStringList對象來寫文本文件,但在這種情況下,我有一個非常大的文件,我認爲這不是最好的解決方案。 如果可能的話,我需要速度和低內存解決方案。

+3

這是一個小文件。你現在有什麼問題?您可能從我的緩衝流代碼中受益。 http://stackoverflow.com/questions/5639531/buffered-files-for-faster-disk-access/5639712#5639712 –

+1

使用緩衝流將優化文件I/O,但不會解決內存使用。當文件被寫入時,整個'TStringList'仍然會在內存中,除非像'TStreamWriter'那樣使用時間較小的部分寫入流,以減少內存使用量。 –

+0

@Remy是對的。除非你需要內存中的整個文件,否則不要這樣做。但是對於這種大小的文件,緩衝I/O仍然是值得的。 –

回答

3

使用TFileStream並在創建數據時將輸出數據寫入其中。這樣,你立即寫入文件並相應地增長,並且不會浪費內存。

如果您使用的是Delphi 2009或更高版本,則可以使用TStreamWriter類來包裝TFileStreamTStreamWriterWrite()WriteLine()寫入String和格式化數據的方法。

相關問題