| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2489 人关注过本帖
标题:如何对1.7G左右的TXT文件进行快速读写处理?
取消只看楼主 加入收藏
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:2 
如何对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)


搜索更多相关主题的帖子: TXT 左右 文件 语句 分割 
2021-04-20 00:35
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
完全理解您的意思,按照边读边写的方式生成一个个的小文件。但我想的是,这种方法是最基础的文本文件读写方式,效率和速度是最低的,有没有更快的方式方法呢?
2021-04-20 11:47
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
尊敬的 风吹过b 大大:
    经过几天的对您给出的语句的进行分析以及对网上数据库语句的学习,恕我驽钝,对数据库的深入操作的学习,还是走进了死胡同,两眼一抹黑,实在是不能把您给出的提示融入到我的程序中,现将我的程序奉上,麻烦您给出一段可执行的完整语句,添加到我的程序中,跪谢中。
    另外,关于我的前一个帖子《如何对1.7G左右的TXT文件进行快速读写处理?》还是按照您提议的方法:将文件进行按段进行切割,分别保存为一个一个的文件,放一个临时目录,然后经处理后读入数据库(本程序中的数据库就是按照这个方法生成的),文本文件大了,慢是比较慢,但是能够处理1.7G以上的TXT文件,不会死机。但是又出现了新问题,读入这个较大的文本文件到数据库中后,行数达到的500万行以上,已经远远超出“Excel2007及以后的版本最大行数是1048576行”的限制,我的程序中“导出到EXCEL文件”功能按钮就无法正常使用了,这个问题怎么解决呢?也想请您给出一个解决方法。
    在这里先非常感谢您的无私帮助。
数据库表.rar (76.61 KB)
2021-04-24 18:51
快速回复:如何对1.7G左右的TXT文件进行快速读写处理?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.184942 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved