請問讀取大型檔案TXT檔(200MB)

<font =“apple-style-span” size=“1”>請問大大

<font =“apple-style-span” size=“1”>
<font =“apple-style-span” size=“1”>今天小弟要讀取一個檔案.txt(200MB)
<font =“apple-style-span” size=“1”>
<font =“apple-style-span” size=“1”>但是因為檔案實在太大了,無法直接load到電腦記憶體裡面去
<font =“apple-style-span” size=“1”>
<font =“apple-style-span” size=“1”>但是他有個共同的關鍵字串,請問有沒有什麼方法可以
<font =“apple-style-span” size=“1”>
<font =“apple-style-span” size=“1”>讀取到關鍵字串,然後將其分割成各自的小檔案呢?
<font =“apple-style-span” size=“1”>
<font =“apple-style-span” size=“1”>

如果用固定大小另存新檔是OK的,下面程式(將13.7M分成14個檔案)給你參考,你將小檔案依序讀找出關鍵字串.

![](upload://t9CI8eR6OMYa1d9zdlJvSJBV1m4.jpeg)

![](upload://tY0wj54ypGMEBnXEkwrzH9LKkud.jpeg)

DonWang大:

最近剛好也有碰到讀取大型檔案的問題  在參考您的做法與下面連結後

http://it360.tw/forum/forum_posts.asp?TID=5562&KW=%E8%AE%80%E6%AA%94+%E8%A8%98%E6%86%B6%E9%AB%94

發現一個問題 就是

LabVIEW的Array能顯示的資料似乎只有65536 row

偏偏在分割找出需要的資料後  我還是得把它整合回同一份  甚至是畫圖顯示

在這個情況下  array所能容納的資料數似乎就不夠用了....

不曉得有沒有解決的方法?

rat大:

我試的結果,Array的row是U32可以上千萬甚至上億,只是記憶體會不足.

記憶體不足的原因是我們為了Debug方便,將龐大的Array秀在面板上造成的,只要不秀到面板上就較不會有記憶體不足的問題.

![](upload://fczQrKxvndvgVegvRfcbhVcBstx.jpeg)

![](upload://5QAie0wBOXttZzXD7wQZmBmbOCt.jpeg)

![](upload://j4gXVnhq1lLPMTJuG3r5ND4LMDR.jpeg)

剛剛試了一下 跑起來還是有點辛苦

目前遭遇的問題如下:

input的資料是  29行*450萬列(87MB左右)  從中取出需要的資料3行*450萬列--->  在這邊就停住  >"<

如果先將檔案分割  又會掉點....(目前不管 掉就掉了....)

取出資料後  進行比對(濾除錯誤資料)--->  這邊又停住  看起來檔案分割成8MB(4萬多筆資料)還是太大?

感謝<span =“apple-style-span” style="font-size: 16.8px; line-height: 21px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span =“bold” style="font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); font-size: 12px; text-decoration: none; ">DonWang大大提供方法

<span =“apple-style-span” style="font-size: 16.8px; line-height: 21px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span =“bold” style="font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); font-size: 12px; text-decoration: none; “>
<span =“apple-style-span” style=“line-height: 20px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>小弟目前使用關鍵字搜尋
<span =“apple-style-span” style=“line-height: 20px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>一次1KByte,只要沒有搜尋到任何字串
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>先從最後一行往回找是否有\n就是第一行符號
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>再將它記錄起來,再create一次1KByte
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>目前搜尋法 是利用循序搜尋 但感覺效率不怎麼好
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>不知道大大是否有什麼別種搜尋法可以提供參考?
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>目標是一個未知(龐大)的文件
<span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>
<font =“apple-style-span” size=“3”><span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”>如何"快速"找到Keyword,且"不會miss”
<span =“apple-style-span” style="font-size: 16.8px; ">
<font =“apple-style-span” size=“3”><span =“apple-style-span” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;”><span =“apple-style-span” style="font-size: 16.8px; ">
<font =“apple-style-span” size=“3”><span =“apple-style-span” style="line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; ">

我將原本的13.8M的檔案複製15次,變成16倍,檔案大小變成了221M來試.

就如同我之前說的只要不要將龐大的字串或矩陣秀到面板上,讀200M只要幾秒,我用下面程式將221M的檔案,複製回16個13.8M的檔案只要35秒.

1210.vi

![](upload://vXIi01nuT3OogTNjOpYyiVS0gNr.jpeg)

![](upload://kakkCskFblJT7POE5kedwddDY5D.jpeg)

![](upload://ei6hwxEQT5I386fSl1xEpX1KmxT.jpeg)