تبلیغات :
خرید لپ تاپ استوک
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 15

نام تاپيک: عوض کردن فرمت فایل های متنی

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Jan 2007
    محل سكونت
    تهران
    پست ها
    1,052

    پيش فرض عوض کردن فرمت فایل های متنی

    سلام دوستان.

    میخواستم بدونم چه جوری میشه فرمت یه فایل متنی که با System.IO.StreamWriter ذخیره میشه رو عوض کرد؟فرمت اولیه ی خودش UTF-8 هست ولی من میخوام از Unicode استفاده کنم.

    ممنون.

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    اگر فقط میخواهید فرمت یک فایل را عوض کنید و به شرطی که فایل کوچک باشد از همچین دستوراتی میتوانید استفاده کنید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ولی برای حالت کلی و فایلهای بزرگ بهتر است از Stream ها استفاده کنید.

    کلاس StreamWriter هم در زمان new آرگومانی از نوع System.Text.Encoding میگیرد که میتواند مشخص کننده فرمت ذخیره سازی باشد.
    Ascii و Unicode و Utf8 و utf7 و bigendianunicode و...

  3. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  4. #3
    آخر فروم باز
    تاريخ عضويت
    Jan 2007
    محل سكونت
    تهران
    پست ها
    1,052

    پيش فرض

    اون روش آرگومان موقع نیو کردن رو امتحان کردم،کلا فایل رو سیو نکرد...

  5. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    اون روش آرگومان موقع نیو کردن رو امتحان کردم،کلا فایل رو سیو نکرد...
    نمیدانم چه کدی نوشتید ولی ایراد از کد شما بوده و ضمناً اگر فایلی را درون برنامه تولید میکنید، باید همانجا و در زمان save فرمت را تایین کنید.
    منظورم آن است که هیچگاه فایل را save نکنید و بعد بیایید (مثلاً بلا دستوری که مثال زدم) فرمت آن را اصلاح کنید.

    =====

    من منظورم همچین کدی بود و این کد به سادگی کار میکند.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    میتوانید به جای UTF8 با هر فرمت دیگری ذخیره کنید.
    سعی کنید ایراد کد خودتان را پیدا کنید.
    در صورت عدم حل مشکل، کدهایتان را اینجا درج کنید.
    موفق باشید.

  6. #5
    آخر فروم باز
    تاريخ عضويت
    Jan 2007
    محل سكونت
    تهران
    پست ها
    1,052

    پيش فرض

    من قبلا کدمو کامل نوشتم،ولی وقتی متن فارسی به برنامه میدم،بعد از اینکه سیوش میکنم با بعضی برنامه های دیگه درست باز نمیکنه که وقتی با Notepad فرمتشو عوض میکنم درست میشه.توی کد خودم فقط همون خط New کردن StreamWriter رو عوض کردم وقتی اجرا کردم چیزی توی فایل ننوشت،در حالی که بدون فرمت درست کار میکنه.

  7. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    فرمت فایلتان را در Notepad به چی تغییر میدید؟

    بحرحال کد زیر هموراه و بدون شک و تردید صحیح کار خواهد کد و اگر برنامه شما مشکل دارد باید ان را در کدهای دیگراتان جستجو کنید.
    using (var strm = new System.IO.StreamWriter("C:\\file.txt", false, System.Text.Encoding.UTF8))
    {
    strm.Write("سلام");
    'strm.Flush();
    }
    (اگر از VS در زمان Save پروزه پیغامی نشان داد که فرمت متنی کدها صحیح نیست، انها را به UTF-8 تنظیم و OK کنید.)

    اگر خوااستید بخشی از کدهایتان را قرار دهید تا بتوان ایرادش را مشخص کرد ولی همینطوری چشم بسته نمیتوانم کمک دیگری بکنم.

  8. #7
    آخر فروم باز
    تاريخ عضويت
    Jan 2007
    محل سكونت
    تهران
    پست ها
    1,052

    پيش فرض

    من یه فایل دارم با این فرمت:

    hh:mm:ss.Text

    که برای زیرنویس فیلمه.این فایلو خود برنامه میسازه.بعد میخوام ازش یه فایل SRT تولید کنم،که از این کد استفاده میکنم:

    Dim I As New IO.StreamReader(Filename + ".tmp")
    Dim O As New IO.StreamWriter(Filename)
    Dim Ind As Integer = 0
    Dim Cur, Nxt As New SubItemStruct
    ReadEntry(I, Cur)
    While Not I.EndOfStream
    ReadEntry(I, Nxt)
    If Cur.Text <> "" And Cur.Text <> " " Then
    Ind += 1
    O.WriteLine(Ind.ToString)
    O.WriteLine(Cur.Time.ToString + " --> " + Nxt.Time.ToString)
    O.WriteLine(Cur.Text)
    O.WriteLine("")
    End If
    Cur = Nxt
    End While
    O.Close()
    I.Close()
    فایل های SRT این شکلی هستن:

    n
    hh:mm:ss.ddd --> hh:mm:ss.ddd
    Text

    فرمتش رو با Notepad از UTF-8 عوض میکنم به Unicode.

  9. #8
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    خوب فرمت را از اول روی Unicode بگذارید!
    من گفتم شما میتوانید از لیست فرمتها هر موردی را انتخاب کنید.
    Ascii و utf8 و unicode و...

    به جای Close اگر بتوانید دستور Using بهتر است و با توجه به چند مورد ریز سرعت و کارایی و... من کد شما را چنین اصلاح کردم و پیشنهاد میکنم این را تست کنید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  10. #9
    آخر فروم باز
    تاريخ عضويت
    Jan 2007
    محل سكونت
    تهران
    پست ها
    1,052

    پيش فرض

    البته یه تعدادی از اون WriteLine ها باید Write باشن.همین الآن امتحانش میکنم.

    ----------

    کاملا درست کار کرد.احتمالا از همون False اضافی توی پارامتر های نیو باید باشه.خیلی ممنون.

    تابع String.IsNullOrEmpty رشته هایی که فقط کاراکتر فاصله داشته باشن رو خالی حساب میکنه،درسته؟من توی قسمت اول کد(قبل از اضافه کردن فرمت SRT) از یه فاصله برای خط خالی استفاده کردم.

    ----------

    نه،رشته هایی که کاراکتر فاصله داشته باشن رد میکنه.بنابراین باید از همون شرط خودم استفاده کنم.
    Last edited by Arshia001; 03-09-2009 at 23:35.

  11. #10
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    تابع String.IsNullOrEmpty کار شرط خودتان را انجام میدهد و مطمئن تر از شرط شما است، چون دو بار چک میکند.
    یکبار Nothing بودن را چک میکند و یک بار Empty بودن.
    (درحالی که شرط شما فقط Empty را چک میکند.)

    تابع فوق رشته دارای فاصله را پر درنظر میگیرید مثل سایر رشته ها.
    (با دستور Trim میتوانید فواصل ابتدا و انتهای رشته را حذف کنید.)

    بحرحال شرط خودتان را پیشنهاد نمیکنم.

    تابه فوق با شرط زیر برابر است:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

برچسب های این موضوع

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •