PDA

View Full Version : جستجو در یک فایل متنی با حجم بالا



Maryam_y_m
شنبه 19 خرداد 1386, 20:03 عصر
یک فایل متنی با حجم 1 گیگابایت دارم و میخواهم در آن به دنبال یک کلمه خاص بگردم. چون حجم فایل زیاد است نمیتوانم آنرا به یکباره readtoend کنم و از readline استفاده میکنم و در هر خط دنبال کلمه مورد نظر میگردم. ولی این روش کار را به شدت کند کرده است. آیا راه حل دیگری وجود دارد که در یک فایل یک کلمه را جستجو کند و آن خط و یا index آن را برگرداند؟ آیا اصولا در فایل میتوان به خطها به صورت تصادفی و نه ترتیبی دسترسی پیدا کرد؟

ghafoori
شنبه 19 خرداد 1386, 21:18 عصر
دوست عزیز من این راه را پیشنهاد می کنم فایل را 1 مگابایت 1 مگابایت بخوانید مثلا یک همچین کدی


Dim fs As New IO.FileStream("a.txt", IO.FileMode.Open)
Dim b As New IO.BinaryReader(fs)
Dim t As New System.Text.UTF8Encoding
Dim s As String
Dim a, b As Integer
Dim fi As New IO.FileInfo("a.txt")
Dim size As Integer = fi.Length
For a = 1 To 1000
b = a * 1048576
If b < size Then
s = t.GetString(b.ReadBytes(b))
Else
s = t.GetString(b.ReadBytes(size - b))
End If
'search
Next

linux
شنبه 19 خرداد 1386, 22:27 عصر
یک فایل متنی با حجم 1 گیگابایت دارم و میخواهم در آن به دنبال یک کلمه خاص بگردم. چون حجم فایل زیاد است نمیتوانم آنرا به یکباره readtoend کنم و از readline استفاده میکنم و در هر خط دنبال کلمه مورد نظر میگردم. ولی این روش کار را به شدت کند کرده است. آیا راه حل دیگری وجود دارد که در یک فایل یک کلمه را جستجو کند و آن خط و یا index آن را برگرداند؟ آیا اصولا در فایل میتوان به خطها به صورت تصادفی و نه ترتیبی دسترسی پیدا کرد؟
خیلی دلم می خواهد بدانم این چه جور فایل تکستی هست؟

Maryam_y_m
یک شنبه 20 خرداد 1386, 08:10 صبح
این فایل یک Syslog است که من میخواهم آنرا در یک دیتابیس import کنم