# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET > آموزش: آموزش کامل کار با فایل ها و فولدرها در VB.NET

## Hybrid

*به نام خدا 
*
سلام دوستان امیدوارم حالتون خوب باشه ، با توجه به اهمیت کار با فایل های و فولدر ها تصمیم گرفتم آموزش رو در این مورد بدم شاید به درد دوستان بخوره . 

به امید خدا قصد دارم این تاپیک رو به یک آموزش جامع تبدیل کنم تا دوستان تنها با خوندن این تاپیک آشنایی کاملی با فایل ها و فولدرها بدست بیارن.


شیوه ی ارائه مطالب در این تاپیک اینه که اول فایل ها رو کامل توضیح میدم و سپس فولدرها رو  و در آخر هر چی که بتونم مثال میارم تا کامل ملکه  ی ذهنتون بشه .



*دوستان عزیز میتونن سوالات خودشون رو در این بخش بپرسن یا اگر نمونه کاری یا مطلب آموزشی در رابطه با این مبحث دارن در همین تاپیک قرار بدن تا تاپیک جامعی داشته باشیم
*



موفق باشید

----------


## Hybrid

توضیح کوتاه در مورد فایل ها و فولدر ها
فضای نامی System.io  و کلاس های پرکاربرد برای پردازش فایلها
توضیح کامل کلاس FileStream
توضیح کامل کلاس StreamWriter
توضیح کامل کلاس StreamReader
معرفی شی My

توضیح متد های 
--FileExists 
--DeleteFile 
--CopyFile 
--RenameFile 
--MoveFile 
--ReadAllText 
--GetFiles

توضیح خصیصه های مربوط به متد GetFileinfo از شی My
--LastAccessTime
--LastWriteTime
--Extension

توضیح متد های 
--Create Directory
--DirectoryExists 
--CopyDirectory 
--CurrentDirectory 
--MoveDirectory
-- خصیصه های GetDirectoryInfo

----------


## Hybrid

*اولین آموزش تصویری در تاریخ 1391/03/23 به تاپیک اضافه شده.*
*دومین آموزش تصویری کار با فایل در تاریخ 1391/03/23 به تاپیک اضافه شد.*



*تاپیک های مفید
*-- *خواندن فایل مخفی*
*--ادغام چند فایل داخل یک فایل
**--کار با فایل در VB.net (خلاصه)*
*--ساخت پوشه در programs file ويندوز سون*
*--راهنمایی برای فشرده سازی فایل ها ...*
*--آموزش کار با System.IO*
*--راهنمایی برای جستجو و لیست کردن فایل ها ...*
*--مشکل در سیو تکست*
*--چگونه فایلی را بطور خودکار بر روی فلش کپی کنیم (vb)*
*--کمک برای اتمام پروژه !! باز و ذخیره کردن و بستن فایل های متنی !!*
*--Drag and Drop a File in Controls*
*--بدست اوردن مسیر فایل*

----------


## Hybrid

*فایل ها :*

یک منبع ذخیره سازی ساده هستند که شما به راحتی میتونید اطلاعات خودتون رو در اونها ذخیره کنید.برای آنکه بتونید از اطلاعاتی که وارد کامپیوتر میکنید چندین بار استفاده کنید باید اونها رو وارد دیسک کنید ، اطلاعات به صورت فایل در حافظه جانبی ذخیره میشن به این نوع فایل ها که حاوی اطلاعات هستند فایل داده میگن.

*فولدرها :
*

 بخشی از حافظه ی دیسک هستند که میتونید چندین فایل رو در آنها ذخیره کنید.


در دات نت برای کار با فایل ها و پوشه ها از فضای نامی System.io استفاده میشه.این فضای نامی حاوی کلاس ها و متدهایی هست که کار با فایل ها و پوشه ها و پردازش اونا رو بسیار راحت میکنه از جمله کلاس های پرکاربرد در این فضای نامی میتوان کلاس های زیر رو نام برد :

*StreamWriter* : از این کلاس میتوان برای ذخیره سازی متن در یک فایل استفاده کرد.

*StreamReader* : این کلاس امکان خواندن اطلاعات از فایل را امکان پذیر میکنه.

*FileStream* : برای ورودی و خروجی بر روی فایلها به کار میرود.

*File* : برای کار بر روی فایلها به کار میرود.

*Directory* : این کلاس حاوی مت  ها و خاصیت هایی برای کار بر روی پوشه ها هست.

----------


## Hybrid

فایل ها درون حافظه ی جانبی ذخیره شدن برای کار با اونها باید ابتدا یک متغیر فایل درون حافظه ی اصلی ایجاد کنیم سپس این متغیر فایل رو به فایل فیزیکی اصلی (موجود در حافظه ی جانبی ) ارتباط بدیم.در واقع این کلاس یک پل ارتباطی بین حافظه ی اصلی و حافظه ی جانبی هست.

نحوه ی تعریف متغیر فایل و ارتباط اون با فایل اصلی به شکل زیر هست :

1 ) ابتدا فضای نامی System.io را به برنامه اضافه کنید .

2 ) یک شی از این کلاس بسازید و پارامتر های اونو مقدار دهی کنید :

Dim FS As New FileStream("محل و موقیت فایل در حافظه ی جانبی",FileMode,FileAccess)

پارامتر اول :مسیر کامل فایل اصلی را در این پارامتر وارد کنید.

پارامتر دوم : داخل این پارامتر باید مشخص کنیم که این فایل فیزیکی موجود در حافظه ی جانبی به چه صورتی  باز بشه این پارامتر دارای مقادیر زیر هست :
*
FileMode.Append* : فایل را طوری باز میکنه که بتونید اطلاعاتی رو بهش اضافه کنید ( بعد از باز کردن فایل اشاره گر رو به انتهای فایل میبره )
*FileMode.Create :* فایل رو در همون مسیری که در پاراتر اول مشخص کردین ایجاد میکنه ( اگه فایل موجود باشه اطلاعاتش رو پاک میکنه)
*Filemode.Open :* فایل موجود رو باز میکنه
*FileMode.OpenorCreate :* اگه فایل موجود باشه اونو باز میکنه در غیر این صورت اونو ایجاد میکنه.


*پارامتر سوم ( FileAccess )میتونه مقادیر زیر رو داشته باشه :*

*FileAccess.read :* فقط میتونید فایل رو بخونید.
*FileAccess.Write :* فقط میتونید در فایل بنویسید.
*FileAccess.readWrite :* هم میتونید داخل فایل بنویسید و هم میتونید اطلاعات داخلش رو بخونید.


*مثال )* 

Dim Fs As New FileStream("c:\siavash.txt",FileMode.Create,FileAc  cess.Write)
دستور بالا یک فایل رو در مسیر مشخص شده ایجاد میکنه و امکان نوشتن اطلاعات در اونو فراهم میکنه.دقت کنید اگه فایلی به همون پسوند و نام در مسیر مشخص شده وجود داشته باشد T این دستور تمامی اطلاعات داخلش رو پاک میکنه.

Dim Fs As New FileStream("c:\siavash.txt", FileMode.Open, FileAccess.Read)
دستور بالا فایل موجود در مسیر مشخص شده رو باز میکنه(Filemode.open )و امکان خواندن اطلاعات اونو فراهم میکنه(FileAccess.read).

----------


## Hybrid

* از این کلاس برای نوشتن اطلاعات در متغیر فایل میتوان استفاده کرد.*

نحوه ی استفاده از این کلاس به صورت زیر است :

Dim SW  As New StreamWriter(نام متغیر فایل)


توضیح : به زبان ساده دستور بالا میگه من میخوام داخل فایل مورد نظر ( که در FileStream مشخص کردیم ) اطلاعاتی رو بنویسم.

*متد های مهم :*

*Write و Writeline :* این دو متد جهت نوشتن اطلاعات در فایل به کار میرن با این تفاوت که متد Writeline ابتدا متن رو مینویسه و سپس اشاره گر رو به خط بعدی منتقل میکند ولی متد Write متن را مینویسد و مکان نما رو به خط بعدی انتقال نمیدهد و در انتهای آخرین کاراکتر قرار میدهد.

*Close :* بعد از اینکه شما اطلاعاتی رو در یک فایل نوشتین یا خوندین باید اون فایل رو حتما ببندین برای اینکار باید این متد  استفاده کنید .

*مثال :
*

از شما میخوان برنامه ای رو بنویسید که متن Siavash ebrahimi رو در یک فایل (که وجود نداره) در درایو c بنویسه. 

توضیح  : یک پروژه جدید رو ایجاد کنید و یک دکمه رو روی فرم قرار بدید و کد زیر رو داخل رویداد click دکمه بنویسید :

Dim Fs As New FileStream("c:\siavash.txt", FileMode.Create, FileAccess.Write)
        Dim SW As New StreamWriter(Fs)
        SW.WriteLine("siavash ebrahimi")
        SW.Close()


*توضیح :*

*خط اول* : یک فایل را در مسیر مشخص شده ایجاد میکنه و امکان نوشتن اطلاعات در داخل اونو فراهم میکنه.
*خط دوم :* گفتیم اگه بخوایم داخل یک فایل اطلاعاتی رو درج کنیم باید یک شی از کلاس StreamWriter ایجاد کنیم و متغیر فایل رو به عنوان پارامتر بهش اختصاص بدیم.
*خط سوم :* با این خط میگیم که رشته siavash ebrahimi رو داخل فایل مورد نظر بنویس و اشارهگر رو به خط بعد منتقل کن.
*خط چهارم :* بعد از اینکه کارمون با فایل مورد نظر تموم شد باید اونو ببندیم.


*پاورقی :* 

این کلاس حاوی متد های زیادی هست  ولی بیشترشون به کار ما نمیان و در شرایط خاصی مورد استفاده قرار میگیرن . لیست کامل متد های این کلاس رو میتونین *اینجا* ببینین.

----------


## Hybrid

*از این کلاس برای خواندن اطلاعات از یک فایل استفاده میشه.* 

نحوه ی استفاده از اون به شکل پایین هست :

Dim Fs As New FileStream("c:\siavash.txt", FileMode.Open, FileAccess.Read)
Dim SR As New StreamReader(Fs)


برای اینکه بتونید از اول فایل شروع به خوندن کنید باید اشاره گر رو به وسیله ی دستور زیر در ابتدای فایل قرار بدید :

SR.BaseStream.Seek(0,SeekOrigin.Begin)

*** زمانی که اشاره گر در انتهای فایل قرار میگیره خاصیت Peek  شی StreamReader برابر -1 میشه.*


*مثال)* از شما میخواین که یک برنامه بنویسید که اطلاعات داخل یک فایل رو به طور کامل بخونه.

توضیح : ابتدا یک تکست باکس و یک دکمه را روی فرمتون قرار بدین و خاصیت MultiLine تکست باکس رو برابر true قرار بدین سپس یک فایل تکست به نام siavash داخل درایو c بسازین و مطلبی رو داخلش بنویسید  و کد زیر رو داخل رویداد Click دکمه قرار بدین .

Dim Fs As New FileStream("c:\siavash.txt", FileMode.Open, FileAccess.Read)
        Dim SR As New StreamReader(Fs)
        SR.BaseStream.Seek(0, SeekOrigin.Begin)

        While SR.Peek > -1
            TextBox1.Text &= SR.ReadLine() + vbNewLine
        End While

        SR.Close()


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


*پاورقی :
*

 میتونین لیست کامل متد ها  این کلاس رو در اینجا مطالعه کنید.

----------


## Hybrid

شی جدید My راه ساده‌ای را برای برخی از خصیصه‌های عمومی مانند مسیر برنامه که برنامه‌نویس ممکن است به آنها احتیاج داشته باشد، اما نمی‌داند آنها در کدامیک از کلاس‌های دات نت قرار دارند را فراهم می‌کند. در اصل شی My کار برنامه‌نویس را برای دسترسی به مواردی مانند ریجیستری، کانکشن‌های شبکه و غیره را ساده‌تر می‌کند. .
اين شيء خاص كه توسط VB 2005 معرفي شد داراي وظايف بسياري كه كارهاي دشواري كه در نسخه هاي قبل شايد لازم بود كه با توابع API يا Components هاي خاص صورت بگيره به راحتي با يك خط كد ممكن ساخته در زير قسمتي از وظايف اين شيء آمده :

*My.Application :
*
این شی اطلاعاتی را در مورد برنامه کنونی و محتوای آن فراهم می‌کند . قسمتinfo این شی  اطلاعاتي در مورد مسير برنامه نام و ورژن ، نام شركت سازنده كپي رايت و ... دراختيارتون قرار میده.
MessageBox.Show(My.Application.Info.DirectoryPath)

نمونه زیر خصوصیت text تک تک فورم های باز برنامه رو نشون میده :
For Each i As Form In My.Application.OpenForms
            MessageBox.Show(i.Text)
        Next



*My.User :
*
این شی اطلاعاتی را در مورد کاربر فعلی ویندوز فراهم می‌کند.شما می‌توانید از این شی برای بررسی حساب‌های کاربری ویندوز و عضو بودن کاربر در گروهای کاربری خاصی استفاده کنید.

مثال ) کد زیر رو داخل رویداد Click یک دکمه بنویسید و نتیجه رو مشاهده کنید :
MessageBox.Show(My.User.Name)


*My.forms :*
 از این شی میتونید بدون اینکه از فرم های دیگه نمونه بسازید اونا رو نمایش بدین :
My.Forms.Form2.ShowDialog()

*My.Computer 
*
این شی امکان دسترسی سریع به اطلاعات ماشینی که برنامه شما روی اون اجرا میشه رو فراهم میکنه اطلاعاتی مثل نام ماشین ، ClipBoard و..

مثال ) نمونه زیر نام کامپیوتر شما رو نشون میده.
MessageBox.Show(My.Computer.Name)

مثال ) نمونه زیر چک میکنه که آیا Clipboard حاوی متن هست یا نه . اگر متنی وجود داشته باشد اونو در یک تکست باکس نشون میده .
If My.Computer.Clipboard.ContainsText Then
            TextBox1.Text = My.Computer.Clipboard.GetText
        End If


مثال ) قطعه کد زیر یک فایل با پسوند wav رو پخش میکنه :
My.Computer.Audio.Play("c:\siavash.wav")

مثال ) قطعه کد زیر ساعت فعلی سیستم رو نشون میده :
MessageBox.Show(My.Computer.Clock.LocalTime.ToStri  ng())

از مولفه هاي ديگر My.Computer شيء FileSystem است كه همه ي روشهايي را كه شما براي دسترسي به فايل و فولدر نياز داريد در دسترس قرار ميدهداز جمله DeleteFile, DeleteDirectory, RenameFile, که در پست بعدی به طور کامل آموزششون میدم.

My.Settings
این شی به شما امکان دسترسی سریع به Setting ها رو فراهم میکنه.


*تذکر:* 
برخی از اشیاء شی My وابسته به نوع پروژه هستند و ممکن است در پروژه‌های متفاوت وجود نداشته باشند. به عنوان مثال شی My.Forms در پروژه‌های کنسول موجود نیست.

----------


## Hybrid

*متد FileExists :* این متد وجود یا عدم وجود یک فایل رو بررسی میکنه و خروجیش از نوع منطقی هست.این متد یک پارامتر داره که باید آدرس کامل فایل رو در اون وارد کنید.

مثال ) 
If My.Computer.FileSystem.FileExists("c:\siavash.txt"  ) = True Then
            MessageBox.Show("فایل مورد نظر وجود دارد")
        Else
            MessageBox.Show("همچین فایلی وجود ندارد")
        End If

توضیح : اگه فایل siavash.txt در درایو c موجود باشه برنامه پیغامی رو نمایش میده.

*DeleteFile :* این تابع فایل مورد نظرتون رو پاک میکنه.یک پارامتر داره که باید آدرس کامل فایل رو در اون وارد کنید.
My.Computer.FileSystem.DeleteFile("آدرس فایل مورد نظر")

مثال ) 
If My.Computer.FileSystem.FileExists("c:\siavash.txt"  ) = True Then
            My.Computer.FileSystem.DeleteFile("c:\siavash.txt"  )
            MessageBox.Show("فایل مورد نظر با موفقیت حذف شد")
        End If

توضیح : اگر فایل در مسیر مورد نظر باشد(FileExists ) برنامه اونو پاک میکنه(DeleteFile ).

*CopyFile :* این متد یک فایل رو کپی میکنه.
My.Computer.FileSystem.CopyFile("مسیر اولیه فایل","مسیر ثانویه فایل")

مثال ) 
If My.Computer.FileSystem.FileExists("c:\hello.txt") = True Then
            My.Computer.FileSystem.CopyFile("c:\hello.txt", "g:\hello.txt")
            MessageBox.Show("فایل مورد نظر با موفقیت کپی شد")
        End If

**میتونید در مسیر جدید نام وپسوند فایل رو تغییر بدین.
مثال ) 
If My.Computer.FileSystem.FileExists("c:\hello.txt") = True Then
            My.Computer.FileSystem.CopyFile("c:\hello.txt", "g:\siavash.bmp")
            MessageBox.Show("فایل مورد نظر با موفقیت کپی شد")
        End If


*RenameFile* :به وسیله ی این متد میتونید نام و پسوند یک فایل رو تغییر بدین.
My.Computer.FileSystem.RenameFile("مسیر کامل فایل", "نام و پسوند جدید")

مثال )
If My.Computer.FileSystem.FileExists("c:\hello.txt") = True Then
            My.Computer.FileSystem.RenameFile("c:\hello.txt", "siavash.txt")
        End If


*MoveFile :* به وسیله ی این متد میتونید یک فایل رو به مسیر جدید انتقال (Cut ) بدین.
My.Computer.FileSystem.MoveFile("مسیر اولیه فایل","مسیر ثانویه فایل")

مثال) 
If My.Computer.FileSystem.FileExists("c:\siavash.txt"  ) Then

            My.Computer.FileSystem.MoveFile("c:\siavash.txt", "g:\siavash.txt")

        End If


*ReadAllText :* به وسیله ی این متد میتونید محتویات کامل یک فایل رو بخونید.خروجیش از نوع string هست پس میتونید محتویات رو راحت داخل یک textbox نشون بدین.

مثال ) 
If My.Computer.FileSystem.FileExists("c:\siavash.txt"  ) Then

            TextBox1.Text = My.Computer.FileSystem.ReadAllText("c:\siavash.txt  ")

        End If

**تکه کد بالا در صورت وجود فایل محتویاتش رو داخل تکست باکس نشون میده.البته اول خاصیت multiline تکست باکس رو برابر true قرار بدین .

*GetFiles :*این متدیک مسیر رو دریافت میکنه وتمامی فایل های موجود در اون مسیر رو به خروجی ارسال میکنه.

My.Computer.FileSystem.GetFiles("c:\",FileIO.Searc  hOption.SearchAllSubDirectories)
یا 
My.Computer.FileSystem.GetFiles("c:\",FileIO.Searc  hOption.SearchTopLevelOnly)

تفاوت شکل اول با شکل دوم در اینه که شکل اول تمامی فایل های موجود در زیر فولدرهای مسیر مورد نظر رو هم بر میگردونه ولی شکل دوم فقط فایل های موجود در مسیر مورد نظر رو بر میگردونه و کاری به زیر فولدرها نداره.

مثال )

For Each i In My.Computer.FileSystem.GetFiles("g:\", FileIO.SearchOption.SearchTopLevelOnly)
            MessageBox.Show(i)
        Next


** قطعه کد بالا تمامی فایل های موجود در درایو g رو نمایش میده.

مثال) 
برنامه ای بنویسید که کاربر با انتخاب یک مسیر ( به وسیله ی FolderBrowserDialog) تمامی فایل های موجود در اون مسیر رو در یک listbox نشون بده.
توضیح : یک listbox  و یک دکمه رو روی فرمتون قرار بدین و کد زیر رو داخل رویداد click دکمه بنویسید.

Dim fbd As New FolderBrowserDialog
        If fbd.ShowDialog() = DialogResult.OK Then
            For Each i In My.Computer.FileSystem.GetFiles(fbd.SelectedPath, FileIO.SearchOption.SearchTopLevelOnly)
                ListBox1.Items.Add(i)
            Next
        End If


*ادامه دارد....*

----------


## Hybrid

*MyFileInfo* : برای دسترسی به اطلاعات  فایل از جمله آخرین زمان دسترسی ، زمان ایجاد فایل ، زمان آخرین تغییر و... به کار میره به شکل زیر :

My.Computer.FileSystem.GetFileInfo(آدرس و نام فایل مورد نظر)

** *LastAccessTime* : برای اینکه آخرین زمان دسترسی به فایل رو به دست بیارین از این خصیصه استفاده کنید به شکل زیر :

My.Computer.FileSystem.GetFileinfo(مسیر کامل فایل ).LastAccessTime

مثال )   My.computer.fileSystem.GetFileinfo("c:\siavash.txt  ").LastAccessTime

*LastWriteTime* : برای اینکه آخرین زمانی که فایل رو ویرایش کردین بدست بیارین از این خصیصه استفاده کنید به شکل زیر :

 My.Computer.FileSystem.GetFileInfo(آدرس و نام فایل).LastWriteTime

مثال ) My.Computer.FileSystem.GetFileinfo("c:\hello.txt")  .LastWriteTime

*Extension* : برای اینکه پسوند فایل مورد نظر رو بدست بیارین از این خصیصه میتونین استفاده کنید :

My.Computer.FileSystem.Getfileinfo(آدرس و نام کامل فایل).Extension

مثال ) My.Computer.FileSystem.Getfileinfo("c:\Jungle.jpg"  ).Extension

مثال 2 ) قطعه کد زیر چک میکنه که آیا فایلی با مشخصات وارد شده وجود دارد یا خیر اگر وجود داشت پسوندش رو داخل یک MessageBox نشون میده :

If My.Computer.FileSystem.FileExists("c:\Changes.txt"  ) Then
            Dim Ext As String = My.Computer.FileSystem.GetFileInfo("c:\Changes.txt  ").Extension
            MessageBox.Show(Ext)
        Else
            MessageBox.Show("همچین فایلی وجود ندارد")
        End If

** خروجی قطعه کد بالا در صورتی که فایل وجود داشته باشد txt. هست.

----------


## Hybrid

سلام دوستان ، امیدوارم از مطالب قبلی استفاده لازم رو برده باشین در این پست میخوام یک آموزش تصویری رو واستون بزارم ، در این آموزش تصویری نحوه ی Copy ، Move , Rename , Create فایل و فولدر رو آموزش داده 

آموزش : توضیحات کلی در مورد فایل و فولدر در وی بی داتنت
مدت زمان آموزش : 6 دقیقه
کیفیت : خوب
دانلود
به زبان انگلیسی

موفق باشید

----------


## Hybrid

سلام ، در آموزش تصویری زیر نحوه ی ذخیره ی لیست آیتم های Listbox در فایل آموزش داده شده.

آموزش : نحوه ی ذخیره آیتم های لیست باکس در فایل
مدت زمان آموزش:9 دقیقه
کیفیت : خوب
حجم فایل : 11 مگابایت
دانلود

به زبان انگلیسی


موفق باشید

----------


## Hybrid

*متدها و خصوصیات پوشه ها :*

*Create Directory :* برای  ساخت پوشه میتونین از این متد استفاده کنید به شکل زیر :
My.Computer.FileSystem.CreateDirectory("Complete Directory Name")

مثال ) My.Computer.FileSystem.CreateDirectory("c:\Temp")
** کد بالا یک پوشه به نام Temp را در مسیر درایو C ایجاد میکند.

*DirectoryExists :* وقتی که قصد دارین وجود یا عدم وجود یک پوشه را چک کنید میتونین از این متد استفاده کنید خروجی این متد از نوع Boolean هست .
My.Computer.FileSystem.DirectoryExists("Complete Directory Address")
مثال ) 
If Not My.Computer.FileSystem.DirectoryExists("c:\Temp") = True Then
            My.Computer.FileSystem.CreateDirectory("c:\Temp")
            MessageBox.Show("پوشه ایجاد شد")
        Else
            MessageBox.Show("پوشه ای وجود ندارد")
        End If

** کد بالا چک میکنه که آیا پوشه ای به نام Temp در مسیر درایو C وجود دارد یا خیر اگه وجود نداشت اونو ایجاد میکنه.

*CopyDirectory :* وقتی که قصد دارین یک پوشه رو از مسیر فعلیش به مسیر جدید کپی کنید میتونین از این متد استفاده کنید.این متد2 پارامتر میگیره که یکی آدرس فعلی پوشه و دیگری آدرس مورد نظر برای کپی هست.
My.Computer.FileSystem.CopyDirectory("Source Folder Address","Destination Folder Address")
مثال ) نمونه زیر چک میکنه که آیا پوشه ای به نام Temp در مسیر درایو C قرار دارد یا خیر اگه وجود داشت اونو به درایو E کپی میکند.
If My.Computer.FileSystem.DirectoryExists("c:\Temp") = True Then
            My.Computer.FileSystem.CopyDirectory("c:\Temp", "e:\Temp")
        Else
            MessageBox.Show("پوشه ای وجود ندارد")
        End If

** میتونین نام پوشه رو در مسیر جدید تغییر بدین :
My.Computer.FileSystem.CopyDirectory("c:\Temp", "e:\Hello")

*CurrentDirectory :* برای بدست آوردن مسیر دایرکتوری جاری میتونین از این خاصیت استفاده کنید به شکل زیر :
MessageBox.Show(My.Computer.FileSystem.CurrentDire  ctory)

*MoveDirectory :* برای جابه جا کردن پوشه از مسیر فعلی به مسیر جدید به کار میرود .
My.Computer.FileSystem.MoveDirectory("Source DirectoryName","Destination DirectoryName")
مثال ) 
My.Computer.FileSystem.MoveDirectory("c:\Temp", "c:\Temp")

*GetDirectoryInfo :* از این تابع میتونین برای دسترسی به اطلاعات یک پوشه از جمله زمان دسترسی به پوشه ، نام پوشه ، مسیر کامل پوشه و... استفاده کنید .

--- LastAccessTime : برای بدست آوردن آخرین زمان دسترسی به پوشه میتونین از این خصیصه استفاده کنید(از نوع DateTime هست) :
My.Computer.FileSystem.GetDirectoryInfo("c\:Temp")  .LastWriteTime

---CreationTime : برای بدست آوردن زمان ایجاد یک پوشه میتونین از این خصیصه استفاده کنید :
My.Computer.FileSystem.GetDirectoryInfo("c:\Temp")  .CreationTime

---Name: برای بدست آوردن نام پوشه میتونین از این خصیصه استفاده کنید :
MessageBox.Show(My.Computer.FileSystem.GetDirector  yInfo("c:\Temp").Name)
** خروجی قطعه کد بالا Temp هست.

---FullName : مسیر کامل فایل رو بر میگردونه :
MessageBox.Show(My.Computer.FileSystem.GetDirector  yInfo("c:\temp").FullName)

----------


## younes221

سلام ،

 ممنون آقای ابراهیمی از آموزش خوبتون.

اینم یک مثال از فایل ، یادم نمیاد از کجا دانلود کردم !!

----------


## star_game

سلام ببخشید من می تونم اطلاعات فرمم که لود شده را با استفاده از streamreader بخونم؟؟اگر می شه چطوری باید آدرس فرم لود شده را بهش بدم؟؟؟؟

----------


## star_game

شما کلاس streamreader را توضیح دادید حالا من می خوام اطلاعات فرمم که لود شده را بخونم چه آدرسی باید بهش بدم؟؟؟؟

----------


## Hybrid

> شما کلاس streamreader را توضیح دادید حالا من می خوام اطلاعات فرمم که لود شده را بخونم چه آدرسی باید بهش بدم؟؟؟؟


سلام ،

 اگه شما اطلاعات فرمتون رو داخل فایل ها ذخیره کردین از طریق همین کلاس میتونید اطلاعات رو بخونید ، مثال هم واسش زدم 

اگه منظورتون چیزه دیگه ای هست لطفا بیشتر توضیح بدین چون راستش سوالتون رو خوب متوجه نشدم .

----------


## mmbguide

با سلام

چطور میتونم در یک فایل متنی شماره خط معینی رو فراخوانی کنم. مثلا فایلی 10 خط اطلاعات داره و من محتویات خط 6ام رو نیاز دارم.

با تشکر

----------


## mmbguide

با سلام

چطور میتونم در یک فایل متنی شماره خط معینی رو فراخوانی کنم. مثلا فایلی 10 خط اطلاعات داره و من محتویات خط 6ام رو نیاز دارم.

با تشکر

----------


## Hossis

سلام 
یک سوال مهم در این جا مطح هست و اون هم اینه که وقتی یک فایل متنی رو باز کردیم, از کجا بفهمیم یونیکد هست یا UTF-8 یا ansii؟؟
در حقیقت, قبل از لود کردن متنش باید این رو بدونیم

----------


## shahryari

> سلام 
> یک سوال مهم در این جا مطح هست و اون هم اینه که وقتی یک فایل متنی رو باز کردیم, از کجا بفهمیم یونیکد هست یا UTF-8 یا ansii؟؟
> در حقیقت, قبل از لود کردن متنش باید این رو بدونیم


با سلام
با تابع زیر میتونید این کار رو انجام بدید

    Private Function is_unicode(ByVal path As String) As Boolean
        Dim enc As System.Text.Encoding = Nothing
        Dim file As System.IO.FileStream = New System.IO.FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)
        If file.CanSeek Then
            Dim bom As Byte() = New Byte(3) {}
            file.Read(bom, 0, 4)
            If (bom(0) = &HEF AndAlso bom(1) = &HBB AndAlso bom(2) = &HBF) OrElse (bom(0) = &HFF AndAlso bom(1) = &HFE) OrElse (bom(0) = &HFE AndAlso bom(1) = &HFF) OrElse (bom(0) = 0 AndAlso bom(1) = 0 AndAlso bom(2) = &HFE AndAlso bom(3) = &HFF) Then
                Return (True)
            Else
                Return (False)
            End If
            file.Seek(0, System.IO.SeekOrigin.Begin)
        Else
            Return (False)
        End If
    End Function
موفق باشید

----------


## shahryari

> با سلام
> 
> چطور میتونم در یک فایل متنی شماره خط معینی رو فراخوانی کنم. مثلا فایلی 10 خط اطلاعات داره و من محتویات خط 6ام رو نیاز دارم.
> 
> با تشکر


با سلام
با استفاده از کد زیر میتونید خط شماره 6 از فایل  C:\001.txt را بخونید

Dim text AsString = "c:\001.txt"
Dim L = IO.File.ReadAllLines(text)
MsgBox(L(6))

----------------
موفق باشید

----------


## abbasrahmati

سلام من یه سوال دارم اگه ما روی یه فرم یه لیست باکس داشته باشیم که خاصیت دراگ دراپ داشته باشه و وقتی فایلی رو روی اون میندازیم ادرس فایل رو بصورت کامل در لیست باکس ثبت میکنه .
مشکل من اینه که وقتی فولدری رو میندازم مسیر فولدر رو ثبت میکنه در حالی که من میخوام فایلهی داخل این فولدر که مثلا موزیک هست ثبت کنه باید چه کنم ؟
ممنونم

----------


## Hossis

> با سلام
> با تابع زیر میتونید این کار رو انجام بدید
> ....
> موفق باشید


 اگر ممکنه تشخیص سایر کدها (اسکی, utf8,utf87 , defualt و غیره رو هم ذکر می کردید
اونجوری که من از کد فهمیدم, چهار بایت اول تعیین کننده است 
خوب اگر ممکن هست, قاعده کلی اش رو بگید تا خودمون تطبیق کنیم
ممنون

----------


## xxnagin

سلام



> سلام من یه سوال دارم اگه ما روی یه فرم یه لیست باکس داشته باشیم که خاصیت دراگ دراپ داشته باشه و وقتی فایلی رو روی اون میندازیم ادرس فایل رو بصورت کامل در لیست باکس ثبت میکنه .
> مشکل من اینه که وقتی فولدری رو میندازم مسیر فولدر رو ثبت میکنه در حالی که من میخوام فایلهی داخل این فولدر که مثلا موزیک هست ثبت کنه باید چه کنم ؟
> ممنونم




شما باید از directoryinfo  استفاده بکنید

    Private Sub ListBox1_DragDrop(sender As Object, e As DragEventArgs) Handles ListBox1.DragDrop
        Dim data As String() = DirectCast(e.Data.GetData(DataFormats.FileDrop), String())
              For i = 0 To data.Count - 1
            Dim dir As New IO.DirectoryInfo(data(i))
            For Each f As IO.FileInfo In dir.GetFiles()
                ListBox1.Items.Add(f.FullName)
            Next
        Next
    End Sub
    Private Sub ListBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragEnter
        If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then
            e.Effect = DragDropEffects.Copy
        End If
    End Sub

----------


## abbasrahmati

> سلام
> 
> 
> 
> 
> شما باید از directoryinfo  استفاده بکنید
> 
>     Private Sub ListBox1_DragDrop(sender As Object, e As DragEventArgs) Handles ListBox1.DragDrop
>         Dim data As String() = DirectCast(e.Data.GetData(DataFormats.FileDrop), String())
> ...


 خیلی ممنونم که جواب دادید این جواب شما تا 99 درصد کار کرد ولی وقتی داخل یه پوشه پوشه هایی دیگری باشه کار نمیکنه(البته فایل های پوشه اول ثبت میشه ولی بقیه نه) ممنون میشم راهنمایی کنید

----------


## xxnagin

اگه شما در قسمت dir.GetFiles()  را دیده باشید  دو تا خاصیت دیگه هم داره 
که یکی برای پسوندها هستش ودیگری  برای هم پسوند , و هم     SearchOption 
که دومی همونی هستش که میخواین که در پسوندها  ,  پسوندی که میخواهید رو که میخواید رو براتون فیلتر  میکنه 
برای همه فایلها  از *.*  استفاده کنید  و  SearchOption  هم  برای وقتی داخل یه پوشه پوشه هایی دیگری باشه از    AllDirectories  و خود  پوشه  TopDirectoryOnly  استفاده میشه

 
    For Each f As IO.FileInfo In dir.GetFiles("*.*", IO.SearchOption.AllDirectories)
 ListBox1.Items.Add(f.FullName)
 Next

----------


## abbasrahmati

خیلی ممنونم دوست من واقعا به من لطف بزرگی کردی اینو به یقین میگم کمتر کسی تو سایتای ایرانی سواد برنامه نویسی داره . . . و خیلی خوشحالم کسی مثل شما اینقدر سوال رو میفهمه و به خوبی جواب میده

----------


## ly.comeng

سلام دوستان عزیز
برای آموزش های مفیدتون ممنونم
در این تاپیک ها من یاد گرفتم که چطور از طریف یک تکست باکس متنی رو در فایل ذخیره کنم
اما الان نیاز دارم بدونم که چطور میشه از یک view  یا TABLE  اطلاعاتی رو در همون فایل متنی ذخیره کرد؟
مثلا من یک فایل تکست ی باید بسازم که 
شماره حساب پرسنل , مبلغ حقوق  , ...
رو ذخیره کنه
و من این اطلاعات رو در view و یا جدول دارم
لطفا راهنمایی بفرمایید
تشکر

----------


## mahyar501

> با سلام
> با استفاده از کد زیر میتونید خط شماره 6 از فایل  C:\001.txt را بخونید
> 
> Dim text AsString = "c:\001.txt"
> Dim L = IO.File.ReadAllLines(text)
> MsgBox(L(6))
> 
> ----------------
> موفق باشید


سلام دوست عزیز
برای اینکه شماره یک خط رو وارد کنیم، باید شمارش رو از صفر شروع کنیم. پس باید برای مشاهده خط ششم، عدد 5 رو توی پرانتز بنویسیم.
با سپاس

----------


## mahsa khadem

سلام 
من یک فایل آپلود در یک صفحه قرار دادم . میخوام وقتی فایلی انتخاب شد حجم فایل رو بدست بیارم ولی نمیدونم چجوری!!!
ممنون میشم راهنمایی کنید.

----------


## gilsoft

> سلام 
> من یک فایل آپلود در یک صفحه قرار دادم . میخوام وقتی فایلی انتخاب شد حجم فایل رو بدست بیارم ولی نمیدونم چجوری!!!
> ممنون میشم راهنمایی کنید.


سلام دوست عزیز

قبل از اجرا حتما پروژه را Build‌ کنید

موفق باشید ...

----------


## srezay

سلام، ممنون از اطلاعاتی که به اشتراک گذاشتی، من میخوام دو آدرس رو مشخص کنم و کل محتوای آدرس اول رو توی آدرس دوم کپی کنم، overwrite هم نکنه...
میشه راهنمائی / کمک کنی؟
پیشاپیش تشکر از همکاریت  :قلب: 

-----------------------------

وقتی روش پایین رو استفاده میکنم در حالتی که فایل وجود داشته باشه برنامه خطا میده:

My.Computer.FileSystem.CopyDirectory("C:\TestDirectory1", "C:\TestDirectory2", True)

خطا:
Could not complete operation on some files and directories. See the Data property of the exception for more details.

مورد دیگه ای که هست اینه که وقتی فایل نسبتاً حجیمی کپی میشه برنامه برای کاربر غیرقابل استفاده میشه و حتی Marquee Progressbar که واسش گذاشتم متوقف میشه، چطور این عملیات رو به بکگراند نرم افزار بفرستم؟

----------

