الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طريقة مضمونة للقراءة من ملف

بدأه بهاء صلاح الدين في 27 ديسمبر 2008 · 1 رد · 495 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أعزائي أعضاء المنتدى.......

وجدت لكم طريقة مضمونة للقراءة من ملف و أعذروني اذا كانت الطريقة معقدة بعض الشئ

و لكنها من وجهة نظري أبسط من طريقة استخدام الوسيلة ReadToEnd أو ما شابهها لأن هذه الطريقة أحيانا" كثيرة لا تقرأ شيئا".


Dim str As System.IO.Stream = OpenFileDialog1.OpenFile()

ِِِِِ 'استخدام الخلية StringBuilder()لبناء النص عن طريق تشبيك أجزاء النص
Dim txt As New System.Text.StringBuilder()

'المتغير L يساوي طول النص
Dim L As Integer = str.Length

'اعلان L كمصفوفة من نوع byte ستوضع في الذاكرة ، هذه المصفوفة تحتوي على حروف النص كلها
Dim buffer(L) As Byte

If str.Read(buffer, 0, L) = 0 Then Exit Sub

Dim i As Integer
'الكائن txt سيقرأ عناصر المصفوفة L من الذاكرة
For i = 0 To L
txt.Append(Chr(buffer(i)))
Next

str.Close()
TextBox1.Text = txt.ToString
'جعل المتغير str يساوي الملف الذي تختاره من خلال الأداة OpenFileDialog

أرجو ابداء الملاحظات

#2

مرحباً أخي الكريم .

اليس من سهل استخدام العملية :

Imports System.IO

Imports System.Text

Dim NText As String = File.ReadAllText("C:\MyDocument.txt", Encoding.ASCII)

أو

Dim NText As String = My.Computer.FileSystem.ReadAllText("C:\MyDocument.txt", Encoding.ASCII)

أنا لا أقول أن طريقتك ( استخدام Stream ) ليست جيدة, لكن يفضل استخدامها لقراءة ملفات كبيرة , هذا ان لم تكن تريد حجز مساحات كبيرة من ذاكرة الحاسوب .

أي, مثال بسيط :

Imports System.IO

Imports System.Text

Public Class Form1

Private CurrentStream As FileStream

Private Sub Button1_Click(ByVal Sender As System.Object, ByVal E As System.EventArgs) Handles Button1.Click

Dim OP As New OpenFileDialog

If OP.ShowDialog = 1 Then

CurrentStream = New FileStream(OP.FileName, FileMode.OpenOrCreate)

HScrollBar1.Maximum = CurrentStream.Length - 20

HScrollBar1.SmallChange = 20

HScrollBar1.LargeChange = 80

End If

End Sub

Private Function ReadBytes(ByVal [From], ByVal [To]) As String

Dim Bytes([To] - [From]) As Byte

CurrentStream.Read(Bytes, 0, Bytes.Length)

Return Encoding.ASCII.GetString(Bytes)

End Function

Private Sub HScrollBar1_MouseCaptureChanged(ByVal Sender As Object, ByVal E As System.EventArgs) Handles HScrollBar1.MouseCaptureChanged

MsgBox(ReadBytes(HScrollBar1.Value, HScrollBar1.Value + 20))

End Sub

End Class

مشكور :) ,

تحياتي BasharVS .

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 27 ديسمبر 2008 في 03:49

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

مواضيع مشابهة