PDA

View Full Version : تفاوت StreamWriter با TextWriter



negar.rafie
یک شنبه 08 شهریور 1394, 17:19 عصر
دوستان تفاوت اینها در چی است؟
وبرای خواندن و نوشتن در فایل متنی از کدام یک از کلاس ها باید استفاده کرد؟
و StringWriter برای کجا استفاده میشه؟
یه کم اینها را باهم قاطی کردم

pbm_soy
دوشنبه 09 شهریور 1394, 00:36 صبح
Textwriter یک کلاس abstract است و کلاسهای دیگر از آن استفاده میکنند و یا بهتر بگم برای پیاده ساز در کلاسهای دیگر از آن استفاده میشود و واحد نوشتن داده ها در آن کاراکتر است
Streamwriter یک کلاس پیاده سازی شده است و درآن از textwriter هم استفاده شده است و البته از کلاس stream هم در پیاده ساز آن استفاده شده است چون کلاس stream داده ها را براساس بایت در نظر میگیرد باید در استفاده از کلاس streamwriter وضعیت encoding را باید مشخص کنید برای تبدیل بایت به کاراکتر و یا برعکس

کلاس stringwriter هم یک کلاس پیاده سازی شده است و از کلاسهای string و stringbuilder استفاده میکنند بعنوان منبع داده ها
درمورد این کلاسها مطالب زیاد است و بهتر است به مثالها و منابع مراجعه کنید
به لینک زیر مراجعه کنید

http://www.c-sharpcorner.com/UploadFile/87b416/difference-between-text-stream-string-and-binary-data/

negar.rafie
دوشنبه 09 شهریور 1394, 09:31 صبح
ولی من متوجه نشدم از هر کدوم باید در کجا استفاده کرد

negar.rafie
دوشنبه 09 شهریور 1394, 18:58 عصر
2 روز گذشت
میخوام فقط بدونم فرق اینا چیه با هم
از هر کدوم باید کجا استفاده کنیم

ahmadreza.s
دوشنبه 09 شهریور 1394, 19:51 عصر
سلام
به نظرم این منبع (http://stackoverflow.com/questions/1010555/io-101-which-are-the-main-differences-between-textwriter-filestream-and-stream) جواب سوالتون هست !

negar.rafie
دوشنبه 09 شهریور 1394, 20:37 عصر
این صفحت انگلیسی زیاد هستند
من میخوام یه نفر بیاد به زبون ساده توضیح بده

pbm_soy
سه شنبه 10 شهریور 1394, 01:18 صبح
این روزها با وجود Google Translate نباید بگید مطلب انگلیسی است!(خیلی وقتها مجبور میشیم مطالبی را از سایتهای چینی و روسی ... مطالعه کنیم)

شما نمیتوانید از textwriter مستقیما استفاده کنید باید یک کلاس تعریف کنید که از آن مشتق شود و بعد از آن کلاس باید استفاده کنید
در این بین دات نت اینکار را برای شما انجام داده برای یک نمونه از کاربردهای کلاس textWriter یک کلاس را پیاده سازی کرده است مانند streamWriter
درمورد کاربرد هم باید بگم که اگر نیاز دارید امکانات خاصی را پیاده سازی کنید برپایه مفاهیم و تعاریف اولیه کلاس TextWriter میتوانید یک کلاس جدید از آن مشتق کنید و پیاده سازی کنید
در مورد کاربر StreamWriter :
این کلاس برای ایجاد و نوشتن در فایلهای متنی استفاده میشود و حتی اگر فایل موجود باشد میتوانید فایل بصورت append باز کنید تا به آن بتوانید اضافه کنید.
حتی میتوانید نوع encoding کاراکترها را در زمان تعریف شئ به سازنده کلاس اعلام کنید مانند دستور زیر


StreamWriter sw = new StreamWriter("e:\\text.txt", Encoding.UTF8);

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

در کل و بطور خلاصه قبلا هم نوشتم کلاس textwriter فقط یک کلاس abstract است و streamwriter هم یک کلاس پیاده سازی شده براساس آن است و شما میتوانید از streamwriter نمونه ایجاد کنید نه از textwriter

اگر مشکل شما با این نوشته حل نشد لطفا دقیقتر بفرمائید منظورتون چیست؟ تا دوستان راهنمائی کنند

negar.rafie
سه شنبه 10 شهریور 1394, 09:34 صبح
ممنون
این را ببنید اومده اول TextWriter با StreamWriter نیو کرده

TextWriter tw = new StreamWriter("date.txt");

tw.WriteLine(DateTime.Now);

tw.Close();

ولی اینجا کلا اینطوری تعریف کرده StreamWriter st = new StreamWriter فرقشون چیه؟یعنی میخوایم یه متنی به فایل اضافه کنیم فرق دارن این دو روش؟همین را پاسخ بدید دیگه کامل متوجه میشم

using (FileStream s = File.Open("file.txt", FileMode.Append, FileAccess.Write))
{

using (StreamWriter st = new StreamWriter(s))
{

st.Write("text");
}

}