سلام دوستان
یک فایل متنی دارم اینحوری
ali
naeim
hasan
mehdi
abass
ghader
fazel
حالا می خوام از خط 3 تا 5 رو بخونم
یعنی از hasan تا abass میشه راهنمایی کنید
با تشکر
سلام دوستان
یک فایل متنی دارم اینحوری
ali
naeim
hasan
mehdi
abass
ghader
fazel
حالا می خوام از خط 3 تا 5 رو بخونم
یعنی از hasan تا abass میشه راهنمایی کنید
با تشکر
سلام. میتونه روشهای مختلفی داشته باشه مثل کد زیر.
ArrayList TextFileLines = new ArrayList();
StreamReader Reader = File.OpenText(@"E:\Test.txt");
while (!Reader.EndOfStream)
{
TextFileLines.Add(Reader.ReadLine());
}
label1.Text = TextFileLines[2].ToString() + " " +
TextFileLines[3].ToString() + " " +
TextFileLines[4].ToString();
Reader.Close();
این لینک رو نگاه کنید، یک پست داره که میگه چطور به یک خط خاص دسترسی داشته باشیم.
آخرین ویرایش به وسیله Parham.D : یک شنبه 30 بهمن 1390 در 07:43 صبح دلیل: اضافه کردن یک لینک!
ممنون توی اون لینکی که فرمودید من این مثال بود فقط من میخوام محدوده شروع و پایان داشته باشه این مثال فقط شروع رو مشخص میکنه
Private Function Getline(ByVal path As String, ByVal line As Int32, ByVal startchar As Int32, ByVal len As Int32) As String
Dim linestr As String = IO.File.ReadAllLines(path)(line)
Dim charstr As String = linestr.Substring(startchar, len)
If len = Nothing Then Return linestr
Return charstr
End Function
جون من میخوام این قسمت خواندن از فایل خیلی سریع انجام بشه و هر هر بار به اطلاعات این احتیاج دارم به نطر شما چه روشی استفاده کنم که بهترین روش باشه (چون برای وب سایت هست) و سرعت لازم رو داشته باشه
سلام.
اگر فایل شما هیچ Structure خاصی نداره، رفتن به خط N ام فایل و خوندن اطلاعات موجود در اون خط، مستلزم خوندن فایل و رد کردن CR/LF های موجود در فایل به تعداد مورد نظر هستش. فرض کنید، شما فایل رو بگونه ای ایجاد می کردید که هر یک از Record ها، طول ثابتی رو به خودشون اختصاص میدادن. فرضا، کلمه ali، ده بایت از فایل رو اشغال می کرد در حالیکه کلمه mousavi نیز، به همین میزان (یعنی ده بایت) رو اشغال میکرد. اونوقت، می تونستیم بگیم برای رفتن به خط سوم، کافیه 2 * 10 بایت اشاره گر به فایل رو هنگام خوندن فایل جلو ببریم و شروع به خوندن کنیم. در این حالیت، میتونید با استفاده از Seek اینکارو انجام بدید. اگر می تونید فایل رو تغییر بدید، اینکارو کنید (البته بهتر از اون اینه که فایل رو بصورت Binary ذخیره کنید و نه Text). اگر نمی تونید چنین تغییری در ساختار فایل ایجاد کنید، چاره ای جز تکرار ReadLine به تعداد دفعات مورد نظر ندارید. فرضا، قصد داریم اطلاعات موجود در خطوط 3-5 رو بخونیم. پس باید در یک حلقه، 2 مرتبه ReadLine کنیم، سپس ReadLine بعدی خط سوم ما خواهد بود. سپس با یه شمارنده، میتونیم به تعداد 3-5 (به بیان دیگه، دو بار) ReadLine رو تکرار کنیم (در حلقه دیگه ای) تا اطلاعات موجود در خطوط 3-5 رو از فایل خونده باشیم. اگر فایل شما بزرگ باشه، ReadAllLines هرگز توصیه نمیشه و اگر حجمش در حد چند کیلوبایت هست، می تونید با ReadAllLines کل اطلاعات رو به یکباره بخونید، سپس در Array مورد نظر Index کنید و اطلاعات موجود در خطوط (3-5) رو بدست بیارید. در بدترین حالت اگر فایل شما بزرگ باشه، باید داده های موجود در فایل رو در بلاک های (فرضا) 16KB ای بخونید و خودتون وجود یا عدم وجود CR رو در رشته تشخیص بدید (وقتی فایل بسیار بزرگ باشه، ReadLine هم توصیه نمیشه).
موفق باشید.
چون طول هر خط متغییر هست وبا اون روش باینری که نمیشه استفادخ کرد - حجم فایل من 1.5 مگ هست و 7000 هزار خط من فکرکردم این حوری بعتر باشه امودم همه فایل را یک دفعه خوندم و توی یک آرایه ریختم و هر خط را با شماره آرایه فراخوان میکنم فقط نمی دونم که این کار تو سرعت سایت تاثیر داره و فشار به سرور میاره یا نه - آیا روش بهتری میشه استفاده کرد ؟