0
我需要用Delphi編寫一個非常大的文件(大約100-150 mb)。 這個文件將是一個CSV文件或一個SQL文件(用戶可以選擇它)。什麼是用delphi編寫大文件的正確方法
在過去,我總是使用TStringList對象來寫文本文件,但在這種情況下,我有一個非常大的文件,我認爲這不是最好的解決方案。 如果可能的話,我需要速度和低內存解決方案。
我需要用Delphi編寫一個非常大的文件(大約100-150 mb)。 這個文件將是一個CSV文件或一個SQL文件(用戶可以選擇它)。什麼是用delphi編寫大文件的正確方法
在過去,我總是使用TStringList對象來寫文本文件,但在這種情況下,我有一個非常大的文件,我認爲這不是最好的解決方案。 如果可能的話,我需要速度和低內存解決方案。
使用TFileStream
並在創建數據時將輸出數據寫入其中。這樣,你立即寫入文件並相應地增長,並且不會浪費內存。
如果您使用的是Delphi 2009或更高版本,則可以使用TStreamWriter
類來包裝TFileStream
。 TStreamWriter
有Write()
和WriteLine()
寫入String
和格式化數據的方法。
這是一個小文件。你現在有什麼問題?您可能從我的緩衝流代碼中受益。 http://stackoverflow.com/questions/5639531/buffered-files-for-faster-disk-access/5639712#5639712 –
使用緩衝流將優化文件I/O,但不會解決內存使用。當文件被寫入時,整個'TStringList'仍然會在內存中,除非像'TStreamWriter'那樣使用時間較小的部分寫入流,以減少內存使用量。 –
@Remy是對的。除非你需要內存中的整個文件,否則不要這樣做。但是對於這種大小的文件,緩衝I/O仍然是值得的。 –