نمایش نتایج 1 تا 5 از 5

نام تاپیک: انتخاب محدوده برای خواندن از فایل متنی

  1. #1

    انتخاب محدوده برای خواندن از فایل متنی

    سلام دوستان

    یک فایل متنی دارم اینحوری

    ali
    naeim
    hasan
    mehdi
    abass
    ghader
    fazel


    حالا می خوام از خط 3 تا 5 رو بخونم
    یعنی از hasan تا abass میشه راهنمایی کنید
    با تشکر

  2. #2
    کاربر دائمی آواتار Parham.D
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    شيراز
    پست
    413

    نقل قول: انتخاب محدوده برای خواندن از فایل متنی

    سلام. میتونه روشهای مختلفی داشته باشه مثل کد زیر.



    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 صبح دلیل: اضافه کردن یک لینک!

  3. #3

    نقل قول: انتخاب محدوده برای خواندن از فایل متنی

    ممنون توی اون لینکی که فرمودید من این مثال بود فقط من میخوام محدوده شروع و پایان داشته باشه این مثال فقط شروع رو مشخص میکنه

    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



    جون من میخوام این قسمت خواندن از فایل خیلی سریع انجام بشه و هر هر بار به اطلاعات این احتیاج دارم به نطر شما چه روشی استفاده کنم که بهترین روش باشه (چون برای وب سایت هست) و سرعت لازم رو داشته باشه

  4. #4

    نقل قول: انتخاب محدوده برای خواندن از فایل متنی

    نقل قول نوشته شده توسط NIMA_1981 مشاهده تاپیک
    سلام دوستان یک فایل متنی حالا می خوام از خط 3 تا 5 رو بخونم یعنی از hasan تا abass میشه راهنمایی کنید با تشکر
    سلام.
    اگر فایل شما هیچ 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 هم توصیه نمیشه).

    موفق باشید.

  5. #5

    نقل قول: انتخاب محدوده برای خواندن از فایل متنی

    چون طول هر خط متغییر هست وبا اون روش باینری که نمیشه استفادخ کرد - حجم فایل من 1.5 مگ هست و 7000 هزار خط من فکرکردم این حوری بعتر باشه امودم همه فایل را یک دفعه خوندم و توی یک آرایه ریختم و هر خط را با شماره آرایه فراخوان میکنم فقط نمی دونم که این کار تو سرعت سایت تاثیر داره و فشار به سرور میاره یا نه - آیا روش بهتری میشه استفاده کرد ؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •