<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="windows-874" %> http://www.siam2dev.com >> ชุมชนนักพัฒนาซอฟต์แวร์ของไทยแห่งใหม่
เข้าสู่ระบบ ::    
http://www.siam2dev.com >> ชุมชนนักพัฒนาซอฟต์แวร์แห่งใหม่
Home   
News   
Articles   
Programming Zone   
DownLoad   
Contact US   
Links   
Webboard   
ฯลฯ   
 
     สวัสดีครับทุกท่าน ผมพัฒนาเว็บนี้ขึ้นมาโดยมีวัตถุประสงค์ ที่จะเห็นโปรแกรมเมอร์ของไทย ได้มีการคิดค้นและพัฒนาซอฟต์แวร์ ของคนไทย กันมากขึ้น เพื่อเป็นการช่วยชาตของเราให้เจริญยิ่งขึ้นไป (จะได้ไม่ต้องทะเลาะกันอย่างทุกวันนี้ 555 อย่าเครียดครับ ) เนื่องจากเว็บนี้ยังเพิ่งเริ่มต้นนะครับอาจมีเนื้อหาบางงส่วนที่ยังไม่สมบูรณ์จึงขออภัยมา ณ โอกาส นี้ด้วยครับ
 
 
   VB.NET Programming
     การจัดการไฟล์ (File Management System)

     Contents
     - รู้จักกับไฟล์
     - การจัดการระบบไฟล์ด้วย System.IO
     - จัดการไดเรกทอรีด้วยคลาส Directory และ Directory Info
     - การเขียนโปรแกรมเพือจัดการกับไฟล์ข้อมูล
          - รูปแบบการเข้าถึงไฟล์แบบต่าง ๆ
          - การจัดการข้อมูลในไฟล์ด้วยคลาส FileSystem , SteamReader และ StreamWriter

     - รู้จักกับไฟล์
          ระบบไฟล์เป็นโครงสร้างพื้นฐานที่สำคัญในระบบคอมพิวเตอร์ที่ใช้สำหรับจัดการกับไฟล์ ไดเรกทอรี และการจัดเก็บข้อมูลในหน่วยความจำสำรอง เช่น ฮาร์ดดิสก์ ซีดีรอม เป็นต้น ในเป็นระเบียบ และมีโครงสร้างที่ดี เพื่อให้สามารถเข้าถึงได้อย่างสะดวกและรวดเร็วในภายหลัง นอกจากนั้นยังครอบคลุมไปถึงความปลอดภัยของข้อมูลที่จัดเก็บด้วย
          ดังนั้นทุกระบบปฏิบัติการจึงจำเป็นต้องมีระบบไฟล์ที่ดีเพื่อใช้ในการจัดเก็บข้อมูล ดัง ต.ย. ระบบไฟล์ที่เรารู้จักได้ แก่ FAT16 , FAT32 ,NTFS และ JFS เป็นต้น
          
     - การจัดการระบบไฟล์ด้วย System.IO
          ระบบปฏิบัติการจะทำหน้าที่จัดการกับระบบไฟล์ ที่อยู่ในโครงสร้างแบบ Tree
สามารถจัดการระบบไฟล์โดยใช้คลาสใน System.IO
สร้าง ลบ ย้าย เปลี่ยนชื่อ และแสดง Property ของไดเร็คทอรี
แสดงรายชื่อไดรว์ที่มีอยู่ในระบบ
กำหนดและแสดง Property ของไฟล์
อ่าน เขียน และแก้ไขไฟล์
ในการเขียนโปรแกรมจะใช้คำสั่ง Imports System.IO ไว้ที่ต้นไฟล์ เพื่อให้สามารถเรียกใช้คลาสต่างๆ ได้
 
     -การจัดการไดเร็กทอรี
คลาสที่ใช้จัดการไดเร็คทอรี
Directory เป็น Static Class สามารถเรียกใช้งานใน Method ได้เลย
ตัวอย่าง Directory.GetCreationTime(“c:\direc”)
DirectoryInfo เป็น Instance Class คือต้องสร้าง Instance หรือ Object ของ Class ขึ้นมาก่อน และเรียกใช้งานใน Method โดยใช้ Instance ที่สร้างขึ้น
ตัวอย่าง Dim direc As DirectoryInfo = New DirectoryInfo(“c:\direc”)
direc.GetCreationTime()
มีความสามารถในการจัดการไดเร็คทอรีได้เท่าเทียมกัน

     - Method ในการจัดการ Directory

     GetCreationTime(<ชื่อไดเร็คทอรี>) ให้ค่าวันและเวลาที่สร้างไดเร็กทอรี
          ตัวอย่าง Directory.GetCreationTime(“c:\direc”)
     GetCurrentDirectory ให้ค่าไดเร็กทอรีปัจจุบัน
          ตัวอย่าง Directory.GetCurrentDirectory()
     GetDirectories(<ชื่อไดเร็คทอรี>) ให้รายชื่อไดเร็คทอรีย่อยที่อยู่ภายใต้ไดเร็คทอรีที่ระบุ โดยคืนค่าในรูปของอาเรย์
          ตัวอย่าง Dim SubDirec() = Directory.GetDirectories(“c:\direc”)
     GetDirectoryRoot(<ชื่อไดเร็คทอรี>) ให้ชื่อรูทไดเร็คทอรีของไดเร็คทอรีที่ระบุ
          ตัวอย่าง Directory.GetDirectoryRoot(“c:\direc”)
     GetFiles(<ชื่อไดเร็คทอรี>) ให้รายชื่อไฟล์ภายในไดเร็กทอรีที่ระบุ โดยคืนค่าในรูปของอาเรย์
          ตัวอย่าง Dim ListFile() = Directory.GetFiles(“c:\direc”)
     GetLastAccessTime(<ชื่อไดเร็คทอรี>) ให้ค่าเวลาที่เข้าถึงไดเร็กทอรีที่ระบุล่าสุด
          ตัวอย่าง Directory.GetLastAccessTime(“c:\direc”)
     GetLogicalDrives ให้รายชื่อไดรว์ทั้งหมดในระบบ คืนค่าในรูปของอาเรย์
          ตัวอย่าง Dim AllDrive() = Directory.GetLogicalDrives()
     SetCurrentDirectory(<ชื่อไดเร็คทอรี>) กำหนดไดเร็คทอรีที่ระบุ
          ตัวอย่าง Directory.SetCurrentDirectory(“c:\direc”)
     Exists(<ชื่อไดเร็คทอรี>) ตรวจสอบว่ามีไดเร็คทอรีที่ระบุหรือไม่ โดยคืนค่า True คือมี หรือ False คือไม่มี
          ตัวอย่าง Directory.Exists(“c:\direc”)
     Move(<ไดเร็คทอรีต้นฉบับ>,<ไดเร็คทอรีปลายทาง>) ย้ายทั้งไดเร็คทอรีไปยังไดเร็คทอรีปลายทาง
          ตัวอย่าง Directory.Move(“c:\direc”, “c:\direcNew”)
     Delete(<ชื่อไดเร็คทอรี>,<True หรือ False>) ลบทั้งไดเร็คทอรีที่ระบุ ซึ่งถ้าไม่กำหนดจะเป็น False
          ตัวอย่าง Directory.Delete(“c:\direcNew”, True)

     - การจัดการไฟล์

คลาสที่ใช้จัดการไฟล์
     File เป็น Static Class สามารถเรียกใช้งานใน Method ได้เลย
          ตัวอย่าง File.GetCreationTime(“c:\direc\file1.txt”)
     FileInfo เป็น Instance Class คือต้องสร้าง Instance หรือ Object ของ Class ขึ้นมาก่อน และเรียกใช้งานใน Method โดยใช้ Instance ที่สร้างขึ้น
          ตัวอย่าง Dim file As FileInfo = New FileInfo(“c:\direc\file1.txt”)
     file.GetCreationTime()
มีความสามารถในการจัดการไฟล์ได้เท่าเทียมกัน

     - Method ในการจัดการ File
     GetCreationTime(<ชื่อไฟล์>) ให้ค่าวันและเวลาที่สร้างไฟล์
          ตัวอย่าง File.GetCreationTime(“c:\direc\file1.txt”)
     GetLastWriteTime(<ชื่อไฟล์>) ให้ค่าวันและเวลาที่เขียนไฟล์ครั้งล่าสุด
          ตัวอย่าง File.GetLastWriteTime(“c:\direc\file1.txt”)
     GetLastAccessTime(<ชื่อไฟล์>) ให้ค่าวันและเวลาที่เข้าถึงไฟล์ครั้งล่าสุด
          ตัวอย่าง File.GetLastAccessTime(“c:\direc\file1.txt”)
     GetAttributes(<ชื่อไฟล์>) ให้ค่า Attributes ของไฟล์
          ตัวอย่าง File.GetAttributes(“c:\direc\file1.txt”).ToString
     SetCreationTime(<ชื่อไฟล์>,<DateTime>) กำหนดวันและเวลาที่สร้างไฟล์
          ตัวอย่าง File.SetCreationTime(“c:\direc\file2.txt”,Now())
     SetLastWriteTime(<ชื่อไฟล์>,<DateTime>) กำหนดวันและเวลาที่เขียนไฟล์ครั้งล่าสุด
          ตัวอย่าง File.SetLastWriteTime(“c:\direc\file2.txt”, Now())
     SetLastAccessTime(<ชื่อไฟล์>,<DateTime>) กำหนดวันและเวลาที่เข้าถึงไฟล์ครั้งล่าสุด
          ตัวอย่าง File.SetLastAccessTime(“c:\direc\file2.txt”, Now())
     SetAttributes(<ชื่อไฟล์>,FileAttributes.<attribute>) กำหนด Attributes ของไฟล์
          ตัวอย่าง File.SetAttributes(“c:\direc\file2.txt”,FileAtrributes.ReadOnly)
      Exists(<ชื่อไฟล์>) ตรวจสอบว่ามีไฟล์ที่ระบุหรือไม่ โดยคืนค่า True คือมี หรือ False คือไม่มี
            ตัวอย่าง File.Exists(“c:\direc\file1.txt”)
      Move(<ไฟล์ในไดเร็คทอรีต้นฉบับ>,<ไฟล์ในไดเร็คทอรีปลายทาง>) ย้ายไฟล์จากไดเร็คทอรีต้นฉบับไปยังไดเร็คทอรีปลายทาง
            ตัวอย่าง File.Move(“c:\direc\file1.txt”, “c:\direcNew\file1.txt”)
      Delete(<ชื่อไฟล์>,<True หรือ False>) ลบไฟล์ที่ระบุ ซึ่งถ้าไม่กำหนดจะเป็น False
            ตัวอย่าง File.Delete(“c:\direcNew\file1.txt”, True)
      Copy(<ไฟล์ในไดเร็คทอรีต้นฉบับ>,<ไฟล์ในไดเร็คทอรีปลายทาง>) สำเนาไฟล์จากไดเร็คทอรีต้นฉบับไปยังไดเร็คทอรีปลายทาง
       ตัวอย่าง File.Copy(“c:\direc\file1.txt”, “c:\direcNew\file1.txt”)
     - การจัดการข้อมูลในไฟล์ 
คลาสที่ใช้จัดการข้อมูลในไฟล์
       FileStream ใช้ในการเปิดไฟล์ขึ้นมาเพื่อจัดการอ่านหรือเขียนกับไฟล์ โดยจะทำงานควบคู่กับ        StreamReader หรือ StreamWriter
       StreamReader ใช้ในการอ่านไฟล์ หลังจากที่ได้เปิดไฟล์จาก FileStream แล้ว
       StreamWriter ใช้ในการเขียนไฟล์ หลังจากที่ได้เปิดไฟล์จาก FileStream แล้ว

     - FileStream
รูปแบบ
       Dim <ชื่อ Object FileStream> As FileStream = New FileStream (<Path>, _
<Mode>, <Access>, <Share>)
       Path พาธของไฟล์ที่ต้องการเปิด
       Mode วิธีการเปิดไฟล์
              IO.FileMode.Open เปิดไฟล์ที่มีอยู่แล้ว
              IO.FileMode.OpenOrCreate เปิดไฟล์ที่มีอยู่แล้ว หรือถ้าไม่มีก็ให้สร้างไฟล์ขึ้นมา
              IO.FileMode.CreateNew สร้างไฟล์ใหม่
              IO.FileMode.Create สร้างไฟล์ใหม่ หรือเขียนทับไฟล์ที่มีอยู่
              IO.FileMode.Append สร้างไฟล์ใหม่ หรือเปิดไฟล์ที่มีอยู่เพื่อเขียนต่อท้าย

       โดยต้องกำหนด Access เป็น IO.FileAccess.Write ด้วย
              Access กำหนดความสามารถในการเข้าถึงข้อมูลไฟล์
       IO.FileAccess.Read กำหนดให้อ่านไฟล์ได้อย่างเดียว
       IO.FileAccess.Write กำหนดให้เขียนไฟล์ได้อย่างเดียว
       IO.FileAccess.ReadWrite กำหนดให้อ่านและเขียนไฟล์ได้
       Share กำหนดรูปแบบการแชร์ข้อมูลในขณะโปรแกรมกำลังเปิดไฟล์
       IO.FileShare.None ไม่อนุญาตให้โปรแกรมอื่นเปิดไฟล์ได้ จนกว่าโปรแกรมจะทำการปิดไฟล์
       IO.FileShare.Read อนุญาตให้โปรแกรมอื่นเปิดอ่านไฟล์ได้
       IO.FileShare.ReadWrite อนุญาตให้โปรแกรมอื่นเปิดไฟล์เพื่ออ่านหรือเขียนได้
       IO.FileShare.Write อนุญาตให้โปรแกรมอื่นเปิดเขียนไฟล์ได้

     - ข้อแนะนำ
     การเขียนโปรแกรมเพื่อเปิดไฟล์ควรใช้ Try…Catch…Finally เข้ามาช่วย เพื่อไม่ให้เกิด Error หรือโปรแกรมหยุดการทำงาน ถ้าไม่สามารถเปิดไฟล์ได้
     รูปแบบ Try
          … ‘การทำงานเมื่อเปิดไฟล์ได้
     Catch
          … ‘การทำงานเมื่อเปิดไฟล์ไม่ได้
     Finally
          … ‘ปิดไฟล์
     End Try
          หลังจากเปิดไฟล์ และเสร็จสิ้นการใช้งานแล้ว ควรปิดไฟล์ทุกครั้ง

รูปแบบ
     <ชื่อ Object FileStream>.Close()

     - StreamReader

รูปแบบ

Dim <ชื่อ Object StreamReader> As StreamReader = New StreamReader _
(<ชื่อ Object FileStream>)
เมื่อเสร็จสิ้นการทำงานควรปิดไฟล์เช่นกัน

รูปแบบ


<ชื่อ Object StreamReader>.Close()

     - Method ที่ใช้ใน StreamReader
     ReadToEnd อ่านข้อมูลขึ้นมาทั้งไฟล์ โดยคืนค่าเป็น String
     
     ตัวอย่าง MyStreamReader.ReadToEnd()
     ReadLine อ่านข้อมูลจากไฟล์ขึ้นมาที่ละบรรทัด และเลื่อน Pointer ไปยังบรรทัดต่อไป โดยคืนค่าเป็น String
     
     ตัวอย่าง MyStreamReader.ReadLine()
     Read อ่านข้อมูลจากไฟล์ทีละไบต์ และเลื่อน Pointer ไปยังไบต์ถัดไป โดยคืนค่าเป็น Integer
     
     ตัวอย่าง MyStreamReader.Read()
     Peek อ่านข้อมูลจากไฟล์ทีละไบต์ แต่ไม่มีการเลื่อน Pointer ไปยังไบต์ถัดไป ซึ่งถ้าอ่านข้อมูลจนถึงสิ้นสุดไฟล์ จะคืนค่า -1
     
     ตัวอย่าง MyStreamReader.Peek()
     ตัวอย่างการอ่านข้อมูลในไฟล์

ตัวอย่าง
Dim MyFileStream As FileStream = New FileStream(“c:\direc\file1.txt”, _
FileMode.OpenOrCreate, FileAccess.Read, FileShare.None)
Dim MyStreamReader As StreamReader = New _
StreamReader(MyFileStream)
Do
Str = MyStreamReader.ReadLine() ‘อ่านข้อมูลทีละบรรทัด
…
Loop Until MyStreamReader.Peek = -1 ‘อ่านจนกระทั่งจบไฟล์


     - StreamWriter

รูปแบบ
Dim <ชื่อ Object StreamWriter> As StreamWriter = New StreamWriter _
(<ชื่อ Object FileStream>)
เมื่อเสร็จสิ้นการทำงานควรปิดไฟล์เช่นกัน
รูปแบบ
<ชื่อ Object StreamWriter>.Close()


     - Method ที่ใช้ใน StreamWriter
     WriteLine(<ข้อมูล>) เขียนข้อมูลลงไฟล์ทีละบรรทัด และเลื่อน Pointer ไปยังบรรทัดต่อไป
     ตัวอย่าง
     Dim MyFileStream As FileStream = New FileStream(“c:\direc\file1.txt”, _
     FileMode.OpenOrCreate, FileAccessWrite, FileShare.None)
     Dim MyStreamWriter As StreamWriter = New _
     StreamWriter(MyFileStream)
     MyStreamWriter.WriteLine(“Text to write”)
     Write(<ข้อมูล>) เขียนข้อมูลลงไฟล์ทีละไบต์ และเลื่อน Pointer ไปยังไบต์ถัดไป
          ตัวอย่าง MyStreamWriter.Write(“A”)


     - ต.ย. การใช้งาน StreamWriter , StreamReader
 
:: http://www.siam2dev.com ::
e-mail :: xnattapong@hotmail.com , songneam@gmail.com