PDA

View Full Version : آموزش: کار با فایل در VB.net (خلاصه)



mtareh
پنج شنبه 07 اردیبهشت 1391, 11:10 صبح
در .net به صورت زیر می توان با یک فایل کار کرد:
System.IO.File.[..]
شما به جای [..] انتخاب های بسیاری دارین که بهتره تست کنین و توضیحات رو بخونین تا بهتر یادتون بمونه. اما من یه مثال می زنم:

Dim MYStream As IO.FileStream
Dim BytArr() As Byte
MYStream = System.IO.File.Open("", IO.FileMode.OpenOrCreate, _
IO.FileAccess.ReadWrite)
MYStream.Read(BytArr, 0, 10)

به حای System.IO می تونیم راحت بنویسیم IO و تفاوتی ایجاد نمی شه.
برای استفاده از فایل باز شده یه FileStream تعریف کردیم تا کار کردنمون راحت تر باشه و فایل باز شده رو به اون نسبت دادیم.
بعد هم با استفاده از MYStream اطلاعات خودمون رو بایت بایت ریختیم توی آرایه BytArr که از ایندکس 0 تا ایندکس 10 این آرایه اطلاعات فایل مورد نظر ماست.
البته کد بالا رو می شد یه کم کوتاه تر و درجا نوشت:

Dim BytArr() As Byte
System.IO.File.Open("Adress", IO.FileMode.OpenOrCreate, _
IO.FileAccess.ReadWrite).Read(BytArr, 0, 10)
و این دو کد فرقی نداشتن.

IO.File.WriteAllLines("Adress", StrArr, System.Text.Encoding.UTF8)
طرز کار کد بالا هم که معلومه: آرایه ی StrArr رو با فرمت UTF8 توی فایل با آدرس داده شده می نویسه.
خوشبختانه .net بسیار منظم و مرتب تر از VB6 هستش. پس باز هم پیشنهاد می کنم که یه سر به محیط .net بزنید و کد نوشتن و چرخیدن بین کد ها رو تجربه کنین.

فرید نجفلو
پنج شنبه 07 اردیبهشت 1391, 14:08 عصر
با تشکر از دوستمون
درسته توضیحات مختصر بود ولی توصیه می کنم دوستان خودشون را عادت بدن که همیشه از Using استفاده کنن مخصوصا در مورد کا را فایل ها
و Try ...Catch در این کار ها خیلی مهمه


Try
Using MYStream = System.IO.File.Open("C:\Test.txt", IO.FileMode.Open, _
IO.FileAccess.ReadWrite)
Dim BytArr(MYStream.Length - 1) As Byte
MYStream.Read(BytArr, 0, MYStream.Length)
'Important Line
MYStream.Close()
End Using
Catch ex As Exception
'Handel Error Here
End Try

البته در کار با فایل نکات خیلی زیادی وجود داره

zaeimh90
پنج شنبه 07 اردیبهشت 1391, 17:22 عصر
عزیز میشه کار using و try....catch رو توضیح بدین.
ممنون میشم.

swallow.pa
پنج شنبه 07 اردیبهشت 1391, 20:40 عصر
دستوراتی که توی using قرار دارن حافظه های بکار برده فقط توی همون قسمت مصرف می شن و خارج از اون بلوک دیگه کاربردی ندارن
و دستور try ,... برای کنترل خطا است که اگه خطائی اتفاق بیفته توی Catch هدایت می شن امیدوارم منظور رو رسونده باشم

zaeimh90
جمعه 08 اردیبهشت 1391, 12:09 عصر
ممنون.الان بجای try و catch نمیشه از دستور on error goto A بعد یک قسمتی رو A معرفی کنیم و تو اون قسمت بنویسیم :
If Err.Description <> "" Then
MsgBox("خطا رخ داده است")
End If
فکر میکنم همین باشه.درسته؟

swallow.pa
جمعه 08 اردیبهشت 1391, 13:32 عصر
خب Try کش دیگه دات نته اما و ان ارور گو تو مربوط به وی بی 6 هستش