فناوری های پیشرفته
Advanced Technolog
 
 
شنبه 13 خرداد 1391 :: 11:50 ::  نويسنده : roboiran
خواندن و نوشتن سي شارپي
يكي از مهم‌ترين بخش‌هاي هر زبان يا هر چارچوب كاري براي توسعه نرم‌افزار، بخش ورودي و خروجي ـ كه اصطلاحا I/O خوانده مي‌شود دو كلمه (Input/Output) است. در«net.» نيز براي كار با ورودي و خروجي، كلاس‌هايي معرفي شده است. در اين شماره قصد داريم با آنها آشنا شويم.

ادامه مطلب را کلیک بفرمائید: : : : : : : : : :

در #C تمامي عمليات I/O از طريق يك Stream انجام مي‌گيرد كه يك مفهوم انتزاعي در مورد توليد و مصرف اطلاعات است. به واسطه عملياتي I/O در #C به صورت مستقيم با دستگاه‌هاي فيزيكي ارتباط برقرار مي‌كند و تمامي عمليات مربوط به خواندن و نوشتن روي دستگاه‌هاي مختلف را به شما ارائه مي‌كند.


ادامه مطلب: : : : . . . . .

از آنجا كه stream قرار است با تمامي دستگاه‌هاي فيزيكي ارتباط برقرار كند، تمامي عمليات در سطوح پايين خود با byte‌ها سر و كار دارد، اما يك مشكل وجود دارد. همان طور كه مي‌دانيد نوع داده byte در #C برابر ۸ بيت است و يك كاراكتر برابر ۱۶بيت (به دليل پشتيباني از Unicode)، اگر داده‌ها به صورت ASCII كد باشد مشكلي نيست؛ اما در سيستم Unicode مشكل به وجود مي‌آيد. براي حل اين اشكال كلاس‌هايي براي تبديل داده‌هاي متني به ارائه‌اي از byte‌ها و همين طور برعكس طراحي شده است كه به شما كمك مي‌كند براحتي عمليات ورودي و خروجي را انجام دهيد.

برخي جريان‌داده‌هايي در #C از پيش تعريف شده ‌است كه براي دسترسي به آنها بايد از فضاي نام System در برنامه خود استفاده كنيد. در زير آنها را به صورت فهرست‌وار بيان مي‌كنيم:

Console.Out:

به استاندارد خارجي در #C متصل است و زماني مقدار مي‌گيرد كه متد Console.WriteLine يا
Console.Write فراخواني مي‌شود.

Console.In:

به استاندارد ورودي در #C متصل است و زماني مقدار مي‌گيرد كه متد Console.Read يا Console.ReadLine فراخواني شود.

Console.Error:

يك ارجاع به جريان‌داده‌اي خطاها متصل است.

تمامي اين جريان داده‌ها كه در بالا توضيح داده شد با توجه به دستگاه‌هاي ورودي و خروجي شما متفاوت است و مطابق با آن، دستگاه عمل مي‌كند.

بررسي كلاس‌هاي اصلي جريان داده‌اي در net.

تمامي اين كلاس‌ها در فضاي نام System.IO موجود است. اين فضاي نام شامل Stream بوده كه يك كلاس پايه براي تمامي كلاس‌هايي است كه با جريان داده‌ها كار مي‌كند.

برخي الگو‌ها و ويژگي‌هاي اصلي اين كلاس را بررسي مي‌كنيم.

الگو‌ها

Close:

يك جريان داده‌اي را مي‌بندد، به اين معني كه انتقال اطلاعات از طريق آن جريان داده ديگر امكان‌پذير نيست‌.

Flush:

ReadByte:

(Read (byte[] buf, int offset, int numbyte:

اين الگو شروع به خواندن يك بلاك از داده‌ها از جريان داده‌‌هاي ورودي مي‌كند و آن را از نقطه[​buf [offset به اندازه numbyte مي‌خواند، سپس هر تعداد بايتي را كه موفق به خواندن آنها شده‌است، بر مي‌گرداند.

(Write (byte b:

(Write (byte[] buf, int offset, int numBytes:

(long Seek (long offset, SeekOrigin origin:

هميشه براي كار با يك جريان داده به يك نقطه آغاز نياز داريد. اگر بعد از چند بار از يك جريان داده اطلاعات بخوانيد يا روي آن بنويسيد، موقعيت مكاني روي آن جريان داده تغيير مي‌كند، اما بعضي وقت‌ها نياز است كه خود شما به صورت دستي اين موقعيت مكاني را تغيير دهيد. در اين حالت با استفاده از متد Seek مي‌توانيد روي يك جريان داده حركت كنيد.
متغير‌هاي ورودي اين متد مانند Read است، فقط به جاي اين كه آن بلاك داده را بخوانند، ‌آن را روي جريان داده‌اي مي‌نويسد.
يك بايت داده را در يك جريان داده‌اي مي‌نويسد.
يك عدد صحيح برمي‌گرداند كه مشخص مي‌كند مي‌تواند از آن منبع جريان داده بخواند يا خير. اگر به انتهاي فايل يا به انتهاي يك جريان داده رسيده باشد، عدد ۱ـ‌ را بر مي‌گرداند در غير اين صورت تعداد Byte‌هايي را كه خوانده برمي‌گرداند.
محتويات يك شيء جريان داده را روي دستگاه فيزيكي مرتبط با آن مي‌نويسد.

ويژگي‌هاي كلاس Stream

CanRead:

مشخص مي‌كند كه از يك جريان داده مي‌توان اطلاعاتي را دريافت كرد يا خير.

CanWrite:

CanSeek:

Length:

Position:

تمامي ويژگي‌هايي كه در بالا ذكر شد فقط به صورت خواندني است؛ يعني شما نمي‌توانيد به آنها مقدار بدهيد. وقتي يك شيء از Stream‌ ايجاد كرديد اين ويژگي‌ها مقدار مي‌گيرند.

اميربهاءالدين سبط‌ الشيخ

موقعيت مكاني يك جريان داده را مشخص مي‌كند
اندازه يك جريان داده را مشخص مي‌كند
مشخص مي‌كند كه مي‌توان موقعيت مكاني روي يك جريان داده را تغيير داد يا خير.
مشخص مي‌كند كه مي‌توان روي يك جريان داده اطلاعاتي را نوشت يا خير.

منبع: کلیک جام جم



 
 
 
💬 نظرات کاربران
💬ثبت نام کاربران
💬ورود کاربران