本人有2G大的文本文件若干,举其中一个来说,每一行是一条数据,中间没有任何分隔符现在想用Delphi对他进行处理,怎样能够尽量的快啊?我想用多线程,可是不知道怎么样能够分批读取这个文件,也不知道怎么保证读出的内容没有断行大虾们帮帮忙啊?

解决方案 »

  1.   

    可以直接定位文件指针,有这个函数的,
    或先判断文件大小,决定开的线程数,
    直接用readln函数,依次读取相应行数,
    指针会相应移动的,读完文件后进入线程处理
      

  2.   

    回2楼,就是读记录比如一次读1000条,别读999.5条这样3楼,请教下,什么函数?另,Readln是到线程里Readln还是在线程外?
      

  3.   

    超大文本用 AssignFile readln这种方式应该是比较快的
      

  4.   

    對於2GB以內的文件使用基本文件io相比使用api要快得多,若是超過2GB,則須另外考慮.實際上除非一字節一字節讀取,否則都不可能剛好讀取的就是n行,通常都需要進行處理,當然處理的方式有兩种,一种是程序顯式處理,另一种是使用底層函數的處理功能.相對來說讀取文件更快的速度還是以磁盤扇區大小的倍數來讀取.相對來說,多線程只在於處理過程當中,因為要考慮到硬件io的速度,否則你開多個線程去讀取的效果也不大.你用三個人排隊去一個窗口去取東西,跟一個人排隊,另一個人處理,當另一個人處理完之後,之前排隊的人剛好取完,或者已經取完一段時間,那輪流執行的速度是一樣的,而相對的三個人反倒是資源的過度浪費.