|
|
|
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
|
|
|
|
|