谢谢!
6 个解决方案
#1
学习
#2
谢谢,顶一下!
#3
几十万行?上百兆?我弄得无序文本,200万也不过20兆而已。
如果真得很大,那就读一些写一些了。用TStrings来操作。
关键是,你得把问题说的详细清楚,要不你得到的答案也是笼统地。
如果真得很大,那就读一些写一些了。用TStrings来操作。
关键是,你得把问题说的详细清楚,要不你得到的答案也是笼统地。
#4
呵呵,谢谢,是我表述不清楚。
我要读取Web日志,每行的长度不固定,行数也不固定,我看了一个,18万行就20多M了。
现在我要把第150000到第160000行读到内存,应该用什么函数呢,文件名当然是知道,如果用TStrings,要首先LoadFromFile,那还是一下子把该文件读到内存了。如果用TFileStream等Stream类型,这些函数和逻辑行似乎没有什么联系,我是否应该首先BlockRead,计算每行的地址呢?
说的更具体点,我现在需要这样一个函数GetLines(SrcFile, StartLine, EndLine, DestFile). 它把SrcFile的从StartLine到EndLine存入DestFile,其所占用的最大内存与SrcFile的大小无关。
我要读取Web日志,每行的长度不固定,行数也不固定,我看了一个,18万行就20多M了。
现在我要把第150000到第160000行读到内存,应该用什么函数呢,文件名当然是知道,如果用TStrings,要首先LoadFromFile,那还是一下子把该文件读到内存了。如果用TFileStream等Stream类型,这些函数和逻辑行似乎没有什么联系,我是否应该首先BlockRead,计算每行的地址呢?
说的更具体点,我现在需要这样一个函数GetLines(SrcFile, StartLine, EndLine, DestFile). 它把SrcFile的从StartLine到EndLine存入DestFile,其所占用的最大内存与SrcFile的大小无关。
#5
没人回答Up一下!
#6
其实你看了LoadFromStream的代码就知道了,
所谓的分行其实就是判断#13#10之后再去分行。
仍旧是内存占用量的问题,不可能不经过内存,
关键是你所能承受的内存占用量的底线。
分批地进行搬运分割。
所谓的分行其实就是判断#13#10之后再去分行。
仍旧是内存占用量的问题,不可能不经过内存,
关键是你所能承受的内存占用量的底线。
分批地进行搬运分割。
#1
学习
#2
谢谢,顶一下!
#3
几十万行?上百兆?我弄得无序文本,200万也不过20兆而已。
如果真得很大,那就读一些写一些了。用TStrings来操作。
关键是,你得把问题说的详细清楚,要不你得到的答案也是笼统地。
如果真得很大,那就读一些写一些了。用TStrings来操作。
关键是,你得把问题说的详细清楚,要不你得到的答案也是笼统地。
#4
呵呵,谢谢,是我表述不清楚。
我要读取Web日志,每行的长度不固定,行数也不固定,我看了一个,18万行就20多M了。
现在我要把第150000到第160000行读到内存,应该用什么函数呢,文件名当然是知道,如果用TStrings,要首先LoadFromFile,那还是一下子把该文件读到内存了。如果用TFileStream等Stream类型,这些函数和逻辑行似乎没有什么联系,我是否应该首先BlockRead,计算每行的地址呢?
说的更具体点,我现在需要这样一个函数GetLines(SrcFile, StartLine, EndLine, DestFile). 它把SrcFile的从StartLine到EndLine存入DestFile,其所占用的最大内存与SrcFile的大小无关。
我要读取Web日志,每行的长度不固定,行数也不固定,我看了一个,18万行就20多M了。
现在我要把第150000到第160000行读到内存,应该用什么函数呢,文件名当然是知道,如果用TStrings,要首先LoadFromFile,那还是一下子把该文件读到内存了。如果用TFileStream等Stream类型,这些函数和逻辑行似乎没有什么联系,我是否应该首先BlockRead,计算每行的地址呢?
说的更具体点,我现在需要这样一个函数GetLines(SrcFile, StartLine, EndLine, DestFile). 它把SrcFile的从StartLine到EndLine存入DestFile,其所占用的最大内存与SrcFile的大小无关。
#5
没人回答Up一下!
#6
其实你看了LoadFromStream的代码就知道了,
所谓的分行其实就是判断#13#10之后再去分行。
仍旧是内存占用量的问题,不可能不经过内存,
关键是你所能承受的内存占用量的底线。
分批地进行搬运分割。
所谓的分行其实就是判断#13#10之后再去分行。
仍旧是内存占用量的问题,不可能不经过内存,
关键是你所能承受的内存占用量的底线。
分批地进行搬运分割。