العودة   منتدى رياض الجنة - Riad Al-Ganah > الرياض التقنية > روضة الكورسات والدورات التقنية والعلمية > روضة دورات تقنية الـ .NET بلغاتها المختلفة > دورة .NET 2008 من منتدى فيجوال بيسك للعرب

دورة .NET 2008 من منتدى فيجوال بيسك للعرب مقدم الدورة : أحمد جمال ، نوع الدورة : كتابية مصحوبة بصور ، حالة الدورة : انتهت ، عدد الدروس : 80 درس . مستوى الدورة : من البداية للاحتراف .

إضافة رد

  #1  
قديم 03-01-2010, 01:37 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي الدرس الخمسون : System.IO - الجزء الثاني - دورة .net 2008

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

نواصل هنا درسنا الذي بدأناه في الجزء السابق عن System.IO .

Stream :


ال Stream يقصد به تدفق او نقل البيانات ما بين مصدر ومستقبل سواء كان ذلك بين ملفين او بين جهازين على الشبكة أو طابعة أو خلافه ، حيث يتم نقل البيانات في الغالب على شكل
sequance of bytes حتى نهاية الملف أو البيانات .
في .net ، هناك الفئة System.IO.Stream والتي تعتبر الفئة الأم التي سنتعامل مع غالب فئاتها لاحقاً ، تحتوي هذه الفئة على الدوال والخصائص الرئيسية التالية -
abstract class - :

CanRead, CanWrite : خصائص تتيح لك معرفة إذا كانت عملية ال Stream هذه تقبل عملية الكتابة أو القراءة وغيرها .
Close() : اغلاق العملية وكل ما يتعلق بها من ملفات وخلافه .
Flush() : تحديث بيانات المستقبل بالبيانات الموجودة حالياً في Buffer ، لو لم يكن هذه العملية تدعم وجود Buffer فهذه الدالة لا تقوم بأي شيء في الواقع .
Length : خاصية تعيد حجم ال stream بالبايت .
Position : تحدد المكان في ال stream .
Read(), ReadByte() : قراءة بايت او مجموعة من bytes .
Seek() : وضع المؤشر في مكان جديد في هذا ال stream .
SetLength() : تحديد طول ال stram الحالي :
Write(), WriteByte() : كتابة بايت او مجموعة من ال bytes .

الفئة File Stream :

هذه الفئة التي تطبق الفئة القاعدية abstract class السابق تختص فقط بالتعامل مع ال streaming مع الملفات .
المثال التالي يوضح الكتابة في عدة أماكن من الملف ومن ثم قراءة البيانات المكتوبة - قبل الكتابة فقط نحتاج لتحويل الرسالة إلى bytes لذا لا تنس هذه الخطوة .

C#:
كود PHP:
private void filestreamexample(string msgstring beforeendmsg)
{
using(FileStream f1 File.Open(@"C:\test.txt",
FileMode.Create))
{
byte[] msgArray Encoding.Default.GetBytes(msg);
byte[] beforeendmsgArray Encoding.Default.GetBytes(beforeendmsg);
f1.Write(msgArray 0msgArray.Length);
f1.Position fStream.Lenght-10;
f1.Write(beforeendmsgArray 0msgAsByteArray.Length);

// view total message.
long totalLenght=msgArray.Length msgAsByteArray.Length;
byte[] filemsg = new byte[totalLenght];
for (
int i 0totalLenghti++)
filemsg[i] = (byte)f1.ReadByte();
 
Console.WriteLine(Encoding.Default.GetString(filemsg));
}

vb.net:
كود PHP:
Private Sub filestreamexample(ByVal msg As StringByVal beforeendmsg As String
    
Using f1 As FileStream File.Open("C:\test.txt"FileMode.Create
        
Dim msgArray As Byte() = Encoding.[Default].GetBytes(msg
        
Dim beforeendmsgArray As Byte() = Encoding.[Default].GetBytes(beforeendmsg
        
        
f1.Write(msgArray0msgArray.Length
        
f1.Position fStream.Lenght 10 
        f1
.Write(beforeendmsgArray0msgAsByteArray.Length
        
        
        
' view total message. 
        Dim totalLenght As Long = msgArray.Length + msgAsByteArray.Length 
        Dim filemsg As Byte() = New Byte(totalLenght - 1) {} 
        For i As Integer = 0 To totalLenght - 1 
            filemsg(i) = CByte(f1.ReadByte()) 
        Next 
التعامل مع الفئات المشتقة :

ذكرنا في أول دروسنا في هذا الموضوع ( راجع الدرس الأول ) أن لدينا عدة انواع من القراءة والكتابة في stream ذكرنا منها StreamWriter, StreamReader و StringWriter, StringReader و BinaryReader, BinaryWriter ، وهم ما سنبدأ في التعرف عليهم الآن .

StreamWriter, StreamReader :

الفئات الأشهر والأكثر استخداماً من بين الفئات الثلاث السابقة ، تحتوي على الدوال الاساسية لعملية الكتابة والقراءة التالية :

StreamWriter :

Close() : اغلاق .
Flush() : مسح كافية محتويات ال buffer .
NewLine : سطر جديد .
Write() : كتابة عادية .
WriteLine() : كتابة مع سطر جديد .

StreamReader :

تحتوي بالاضافة إلى الدوال الثلاث الأولى في الفقرة السابقة :

Peek() قراءة الحرف التالي مباشرة للمكان الحالي دون تغيير مكان المؤشر.
Read() : القراءة .
ReadBlock() : قراءة مجموعة من الداتا ووضعها في ال buffer .
ReadLine() : قراءة سطر كامل .
ReadToEnd() : قراءة من مكان المؤشر حتى النهاية .

أمثلة :

مثال يجمع عمليتي القراءة والكتابة إلى ملف نصي :
C#:
كود PHP:
private void write(

string msg)
{
using(StreamWriter w1 File.CreateText("test.txt"))
{
w1.Write("Start");
w1.Write(writer.NewLine);
w1.WriteLine(msg);
}
}
private 
string read()
{
using (StreamReader s1 File.OpenText("test.txt"))
            {
                
string input null;
  
string msg="";
                while ((
input sr.ReadLine()) != null)
                {
                    
Console.WriteLine(input);
   
msg+=input;
                }
  return 
msg;
            }

vb.net:
كود PHP:
Private Sub write(ByVal msg As String
    
Using w1 As StreamWriter File.CreateText("test.txt"
        
w1.Write("Start"
        
w1.Write(writer.NewLine
        
w1.WriteLine(msg
    
End Using 
End Sub 
Private Function read() As String 
    
    Using s1 
As StreamReader File.OpenText("test.txt"
        
Dim input As String Nothing 
        Dim msg 
As String "" 
        
While (input sr.ReadLine()) IsNot Nothing 
            Console
.WriteLine(input
            
msg += input 
        End 
While 
        Return 
msg 
    End Using 
    
End 
Function 
ناتج عملية الكتابة في الملف :



وناتج عملية القراءة على ال Console:



*** لكن ناتج المتغير النصي سيكون بدون علامة السطر الجديد والذي سيكون ناتج عن الدالة ...

StringWriter, StringReader :

كما ذكرنا سابقاً لا يوجد اي فارق عما سبق ، فقط الناتج يعود في string وهو ما يمكنك من عملية بالشكل التالي مثلاً :
C#:

كود PHP:
StringBuilder stbuilder strWriter.GetStringBuilder();
stbuilder.Remove(010);
stbuilder.Insert(0"Ahmed Gamal"); 
vb.net:
كود PHP:
Dim stbuilder As StringBuilder strWriter.GetStringBuilder() 
stbuilder.Remove(010
stbuilder.Insert(0"Ahmed Gamal"
BinaryReader, BinaryWriter

تمكنك من الكتابة والقراءة والتخزين في ملفات binary ، مشتقة من الفئة System.Object وتحتوي على أغلب الدوال الموجودة في الاربع فئات السابقة . اضافة إلى الدالة ReadXXXX() حسب نوع المحتويات ، هذا المثال للقراءة والكتابة باستخدام هذه الفئة :

C#:
كود PHP:
FileInfo f = new FileInfo("Binary.dat");
using(BinaryWriter bwriter = new BinaryWriter(f.OpenWrite()))
{
double dbl 1234.67;
long lng 34567000;
string str "A, B, C";
// Write differnt data.
bwriter.Write(dbl);
bwriter.Write(lng);
bwriter.Write(str);
}
 
// Reading using ReadXXX;
using(BinaryReader breader = new BinaryReader(f.OpenRead()))
{
Console.WriteLine(breader.ReadDouble());
Console.WriteLine(breader.ReadInt64()); // == long as i think , i am not sure.
Console.WriteLine(breader.ReadString());

vb.net:
كود PHP:
Dim f As New FileInfo("Binary.dat"
Using bwriter As New BinaryWriter(f.OpenWrite()) 
    
Dim dbl As Double 1234.67 
    Dim lng 
As Long 34567000 
    Dim str 
As String "A, B, C" 
    
    ' Write differnt data. 
    bwriter.Write(dbl) 
    bwriter.Write(lng) 
    bwriter.Write(str) 
End Using 
 
Reading using ReadXXX
Using breader As New BinaryReader(f.OpenRead()) 
    
Console.WriteLine(breader.ReadDouble()) 
    
Console.WriteLine(breader.ReadInt64()) 
    
' == long as i think , i am not sure. 
    Console.WriteLine(breader.ReadString()) 
End Using 
إلى هنا نكون قد انتهينا من درس هذا اليوم ، بقي لدينا جزء واحد فقط في موضوع الملفات نستعرضه سوية غداً إن شاء الله .

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
إضافة رد

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس الثاني والستون : ADO.net - الجزء الثاني - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 3 05-03-2011 11:37 PM
الدرس الرابع والعشرون : System.Object دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 1 03-02-2011 03:55 PM
الدرس الحادي والخمسون : System.IO - الجزء الثالث والأخير - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-01-2010 01:52 PM
الدرس التاسع والأربعون : System.IO - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-28-2010 10:15 PM
الدرس الثاني والأربعون : ال Gc دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-26-2010 04:17 PM

استضافة الحياة

الساعة الآن 11:23 AM.


Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية
Ads Management Version 3.0.1 by Saeed Al-Atwi

SlamDesignzslamDesignzEdited by Riad Al-Ganah Team - جميع الحقوق محفوظة لشبكة رياض الجنة

Privacy Policy Valid XHTML 1.0 Transitional By SlamDesignz Valid CSS Transitional By SlamDesignz