如何对1.7G左右的TXT文件进行快速读写处理?
我对文本文件一般读入的方式都是将这个文本文件一次性读入内存,然后逐行读出,读入的语句如下:
(模块:)
程序代码:
Public hpl() As String Public hpl_count As Long Public Sub read_to_array(ByVal filename As String) ReDim hpl(1 To 1) hpl_count = 1 fn = FreeFile Open filename For Input As #fn Do While Not EOF(fn) Line Input #fn, lk hpl(hpl_count) = lk hpl_count = hpl_count + 1 ReDim Preserve hpl(1 To hpl_count) Loop hpl_count = hpl_count - 1 ReDim Preserve hpl(1 To hpl_count) Close #fn End Sub
(程序引用:)
Private Sub Command1_Click() read_to_array "C:\AAA.txt" End Sub
逐行读出的语句如下:
程序代码:
Private Sub Command1_Click() Open "c:\1.txt" For Append As #1 For i = 1 To hpl_count Print #1, hpl(i) Next i End Sub
现在遇见了一个超级大的TXT文件,1.7G左右大小,不能保证以后还会遇到更大的TXT文件,用上述语句读入就会内存溢出,不知道这么大的文件怎么进行保证速度的情况下进行读写操作?请路过的大神和高手不吝赐教一下。
或者,我想能不能把这个文件能够进行分割,我尝试了一下,我的工作电脑是2G内存,安装了win7系统,在通过使用上述语句的情况下,400M左右的文本可以正常读取。
由于这个TXT文件内部是一段一段的数据,每一段数据是一个整体,行数不定,我看到网上的文件分割语句都是指定行数分割,比如每1000行分割成一个文件,这样的话就会将我的这个巨大文本里的一个个的小整体破坏完整性,不知道如何将巨大文本里的一个个的小整体按照小整体的格式进行指定生成文件的大小进行分割(例如每个小整体都是从包含“Site1 PartID: "”字符串行开始,到包含“Device PartID: "”字符串行结束,由于我的工作电脑用上面的语句可以正常读写400M的文件,所以我想能不能有一个分割程序,在读了几个完整的小整体段数据后,差不多400M了,就进行分割,然后再读了几个完整的小整体段数据后,差不多400M了,再进行分割,以此类推按照这个文件1.7G大小,差不多分割成5个文件,前4个都是400M左右,最后一个100M左右,首先要保证的是每个文件中都是完整的小段数据)。
这个想法,也请路过的大神和高手不吝赐教。
然后咨询一个旁的问题,我用上面的语句进行读写后,电脑会变得非常的卡,是不是需要在程序运行完后,进行一下对内存的释放?这个语句该怎么写呢?
下方附,巨大文本文件压缩包,压缩后5M左右,释放后大约1.7G。
N-LPY-D_20210114.rar
(4.79 MB)