سلام دوستان.
میخواستم بدونم چه جوری میشه فرمت یه فایل متنی که با System.IO.StreamWriter ذخیره میشه رو عوض کرد؟فرمت اولیه ی خودش UTF-8 هست ولی من میخوام از Unicode استفاده کنم.
ممنون.
سلام دوستان.
میخواستم بدونم چه جوری میشه فرمت یه فایل متنی که با System.IO.StreamWriter ذخیره میشه رو عوض کرد؟فرمت اولیه ی خودش UTF-8 هست ولی من میخوام از Unicode استفاده کنم.
ممنون.
سلام
اگر فقط میخواهید فرمت یک فایل را عوض کنید و به شرطی که فایل کوچک باشد از همچین دستوراتی میتوانید استفاده کنید:
ولی برای حالت کلی و فایلهای بزرگ بهتر است از Stream ها استفاده کنید.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کلاس StreamWriter هم در زمان new آرگومانی از نوع System.Text.Encoding میگیرد که میتواند مشخص کننده فرمت ذخیره سازی باشد.
Ascii و Unicode و Utf8 و utf7 و bigendianunicode و...
اون روش آرگومان موقع نیو کردن رو امتحان کردم،کلا فایل رو سیو نکرد...
سلام
نمیدانم چه کدی نوشتید ولی ایراد از کد شما بوده و ضمناً اگر فایلی را درون برنامه تولید میکنید، باید همانجا و در زمان save فرمت را تایین کنید.اون روش آرگومان موقع نیو کردن رو امتحان کردم،کلا فایل رو سیو نکرد...
منظورم آن است که هیچگاه فایل را save نکنید و بعد بیایید (مثلاً بلا دستوری که مثال زدم) فرمت آن را اصلاح کنید.
=====
من منظورم همچین کدی بود و این کد به سادگی کار میکند.
میتوانید به جای UTF8 با هر فرمت دیگری ذخیره کنید.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سعی کنید ایراد کد خودتان را پیدا کنید.
در صورت عدم حل مشکل، کدهایتان را اینجا درج کنید.
موفق باشید.
من قبلا کدمو کامل نوشتم،ولی وقتی متن فارسی به برنامه میدم،بعد از اینکه سیوش میکنم با بعضی برنامه های دیگه درست باز نمیکنه که وقتی با Notepad فرمتشو عوض میکنم درست میشه.توی کد خودم فقط همون خط New کردن StreamWriter رو عوض کردم وقتی اجرا کردم چیزی توی فایل ننوشت،در حالی که بدون فرمت درست کار میکنه.
سلام
فرمت فایلتان را در Notepad به چی تغییر میدید؟
بحرحال کد زیر هموراه و بدون شک و تردید صحیح کار خواهد کد و اگر برنامه شما مشکل دارد باید ان را در کدهای دیگراتان جستجو کنید.
(اگر از VS در زمان Save پروزه پیغامی نشان داد که فرمت متنی کدها صحیح نیست، انها را به UTF-8 تنظیم و OK کنید.)using (var strm = new System.IO.StreamWriter("C:\\file.txt", false, System.Text.Encoding.UTF8))
{
strm.Write("سلام");
'strm.Flush();
}
اگر خوااستید بخشی از کدهایتان را قرار دهید تا بتوان ایرادش را مشخص کرد ولی همینطوری چشم بسته نمیتوانم کمک دیگری بکنم.
من یه فایل دارم با این فرمت:
hh:mm:ss.Text
که برای زیرنویس فیلمه.این فایلو خود برنامه میسازه.بعد میخوام ازش یه فایل SRT تولید کنم،که از این کد استفاده میکنم:
فایل های 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()
n
hh:mm:ss.ddd --> hh:mm:ss.ddd
Text
فرمتش رو با Notepad از UTF-8 عوض میکنم به Unicode.
سلام
خوب فرمت را از اول روی Unicode بگذارید!
من گفتم شما میتوانید از لیست فرمتها هر موردی را انتخاب کنید.
Ascii و utf8 و unicode و...
به جای Close اگر بتوانید دستور Using بهتر است و با توجه به چند مورد ریز سرعت و کارایی و... من کد شما را چنین اصلاح کردم و پیشنهاد میکنم این را تست کنید:
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته یه تعدادی از اون WriteLine ها باید Write باشن.همین الآن امتحانش میکنم.
----------
کاملا درست کار کرد.احتمالا از همون False اضافی توی پارامتر های نیو باید باشه.خیلی ممنون.
تابع String.IsNullOrEmpty رشته هایی که فقط کاراکتر فاصله داشته باشن رو خالی حساب میکنه،درسته؟من توی قسمت اول کد(قبل از اضافه کردن فرمت SRT) از یه فاصله برای خط خالی استفاده کردم.
----------
نه،رشته هایی که کاراکتر فاصله داشته باشن رد میکنه.بنابراین باید از همون شرط خودم استفاده کنم.
Last edited by Arshia001; 03-09-2009 at 23:35.
سلام
تابع String.IsNullOrEmpty کار شرط خودتان را انجام میدهد و مطمئن تر از شرط شما است، چون دو بار چک میکند.
یکبار Nothing بودن را چک میکند و یک بار Empty بودن.
(درحالی که شرط شما فقط Empty را چک میکند.)
تابع فوق رشته دارای فاصله را پر درنظر میگیرید مثل سایر رشته ها.
(با دستور Trim میتوانید فواصل ابتدا و انتهای رشته را حذف کنید.)
بحرحال شرط خودتان را پیشنهاد نمیکنم.
تابه فوق با شرط زیر برابر است:
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)