Input/output with files

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับการเขียนโปรแกรมในการทำงานกับไฟล์ เพื่ออ่านข้อมูลจากไฟล์และเขียนข้อมูลลงไปบนไฟล์ในภาษา C#

โปรแกรมคอมพิวเตอร์ส่วนมากทำงานกับไฟล์ ซึ่งไฟล์จะแบ่งออกเป็น 2 ประเภท คือ text file และ binary ไฟล์ ในบางครั้งการเขียนโปรแกรมนั้นเราจำเป็นต้องเก็บข้อมูลในรูปของไฟล์ เช่น การเก็บข้อมูลการตั้งค่า หรือบันทึก log เพื่อนำมาใช้งานในการเปิดโปรแกรมครั้งใหม่ ในบทนี้ เราจะพูดถึงการเขียนโปรแกรมเพื่อทำงานกับ Text file ในภาษา C# ซึ่งเป็นรูปแบบการเก็บไฟล์ที่สะดวกและง่ายในการใช้งาน และสามารถเข้าถึงได้โดยโปรแกรมทุกประเภท

การอ่านค่าจาก text file

ต่อไปเป็นตัวอย่างของโปรแกรมในการอ่านไฟล์จากคอมพิวเตอร์ โดยโปรแกรมจะอ่านไฟล์จากพาทที่กำหนด และแสดงข้อความในไฟล์ ดังโค้ดข้างล่าง

using System;
using System.IO;

class ReadFromFile
{
static void Main(string[] args)
{
string line;
StreamReader file = null;

try {
file = new StreamReader("c:\\file.txt");

while ((line = file.ReadLine()) != null)
{
Console.WriteLine(line);
}
} catch (FileNotFoundException e) {
Console.WriteLine("Error: File not found.");
} finally {

if (file != null)
{
file.Close();
}
}
}
}

ในตัวอย่างข้างบนเป็นวิธีที่ง่ายที่สุดในการอ่านไฟล์ด้วยภาษา C# เราใช้คลาส StreamReader จากเนมสเปซ System.IO; ที่ใช้สำหรับการอ่านไฟล์ เราเปิดไฟล์จาก "c:\\file.txt" ซึ่งเป็นไฟลฺ์ชื่อ file.txt ในไดร์ C

while ((line = file.ReadLine()) != null)
{
Console.WriteLine(line);
}

ใน While loop เราใช้เมธอด file.ReadLine() วนซ้ำอ่านข้อความจากไฟล์ที่ละบรรทัดมาเก็บไว้ในตัวแปรชั่วคราว line และแสดงผลออกทางหน้าจอ ถ้าหากไฟล์สิ้นสุดเมธอดจะคืนค่า null กลับมา

นอกจากนี้เรายังตรวจจับความผิดพลาดที่อาจจะเกิดขึ้นในกรณีที่ไม่พบไฟล์ด้วย FileNotFoundException ผลลัพธ์ของโปรแกรมขึ้นอยู่กับไฟล์ของคุณ และคุณต้องกำหนดพาทของไฟล์ให้ถูกต้องด้วย การใช้ Exception กับไฟล์นั้นเป็นสิ่งที่จำเป็นในการจัดการกับข้อผิดพลาดที่อาจจะเกิดขึ้นในระหว่างที่ทำงานกับไฟล์

if (file != null)
{
file.Close();
}

ในการทำงานกับไฟล์ทุกครั้ง เราจำเป็นต้องปิดการเชื่อมต่อของ File stream ทุกครั้งโดยารใช้เมธอด Close() เพื่อทำให้ไฟล์สามารถนำไปใช้งานอย่างอื่นได้ต่อไป

การเขียนลงบน text file

ตัวอย่างต่อไปเป็นการเขียนข้อความลงเป็น text ไฟล์ในภาษา C# เราจะเขียนลงทีละบรรทัดเช่นเดียวกันกับการอ่านไฟล์

using System;
using System.IO;

class WriteToFile
{
static void Main(string[] args)
{
string line;
StreamWriter file = new StreamWriter("d:\\settings.txt");

file.WriteLine("Writing to file line 1.");
file.WriteLine("Writing to file line 2.");
file.WriteLine("Writing to file line 3.");

Console.Write("Enter your message: ");
line = Console.ReadLine();
file.WriteLine(line);

file.Close();

Console.WriteLine("Writing to file succeed.");
}
}

ในตัวอย่าง เป็นโปรแกรมในการเขียนข้อมูลลงไปบน text file ด้วยคลาส StreamWriter เราเปิดไฟล์ชื่อ settings.txt เพื่อเขียนข้อมูล ถ้าไฟล์ไม่มีอยู่โปรแกรมจะสร้างไฟล์ใหม่ ถ้าหากมีอยู่แล้วโปรแกรมจะลบไฟล์เดิมทิ้งไปและสร้างไฟล์ใหม่เพื่อเขียนข้อมูล

StreamWriter file = new StreamWriter("d:\\settings.txt");

นี่เป็นคำสั่งในการสร้างตัวแปรเพื่อเขียนไฟล์จากคลาส StreamWriter โดยใส่พาธของไฟล์ลงไปในคอนสตรัตเตอร์

file.WriteLine("Writing to file line 1.");
file.WriteLine("Writing to file line 2.");
file.WriteLine("Writing to file line 3.");

เราใช้เมธอด WriteLine() สำหรับเขียนข้อมูลลงไปใน text file ทีละบรรทัด และคุณสามารถใช้เมธอด Write() ได้เช่นกัน ซึ่งในการเขียนนั้นจะไม่ขึ้นบรรทัดใหม่

Enter your message: MarcusCode Tutorial
Writing to file succeed.

นี่เป็นตัวอย่างในการรันโปรแกรม โดยใส่ข้อความว่า "MarcusCode Tutorial" ในบรรทัดสุดท้ายที่รับจากคีย์บอร์ดเพื่อเขียนลงไปในไฟล์ และเราแสดงข้อความว่า "Writing to file succeed"

// settings.txt
Writing to file line 1.
Writing to file line 2.
Writing to file line 3.
MateoCode tutorial

และนี่เป็นผลลัพธ์ของไฟล์ settings.txt ที่ถูกเขียนขึ้น

การเขียนข้อมูลต่อท้ายไฟล์ (File appending)

ในการเก็บข้อมูลกับไฟล์บางรูปแบบนั้นจำเป็นที่จะต้องเขียนข้อมูลลงไปในไฟล์เดิม เราเรียกว่าการเขียนข้อมูลต่อท้ายไฟล์หรือ File appending ต่อไปเป็นตัวอย่างของโปรแกรมในการเขียนข้อมูลต่อท้ายไฟล์ในภาษา C#

using System;
using System.IO;

class ApendingToFile
{
static void Main(string[] args)
{
Console.WriteLine("Enter 1 to create new file");
Console.WriteLine("Enter 2 to apend to file");
Console.Write("Your select: ");
string choice = Console.ReadLine();

StreamWriter file = null;
string fileName = "d:\\my_file.txt";

try {

if (choice == "1")
{
file = new StreamWriter(fileName);
}
else
{
file = File.AppendText(fileName);
}

string line = null;

do
{
Console.Write("Enter your message: ");
line = Console.ReadLine();
if (line != "exit")
{
file.WriteLine(line);
}

} while (line != "exit");

} catch (Exception e)
{
Console.WriteLine(e.Message);
} finally {
if (file != null)
{
file.Close();
}
}

file.Close();

}
}

ในตัวอย่าง นั้นเป็นโปรแกรมเขียนข้อมูลไปใน text file ซึ่งมีสองแบบให้เลือกที่เขียนคือการสร้างไฟล์ใหม่หรือเขียนต่อจากไฟล์เดิม โดยเมื่อผู้ใช้เลือก 1 หมายถึงเขียนไฟล์โดยสร้างขึ้นใหม่ และ 2 หมายถึงให้เขียนต่อไฟล์เดิม และดรารับข้อความที่ต้องการเขียนผ่านทางคีย์บอร์ดจนกว่าจะพิมพ์คำว่า "exit" เพื่อเป็นการจบการเขียนไฟล์

file = File.AppendText(fileName);

นี่เป็นคำสั่งในการเปิดไฟล์เพื่อเขียนต่อท้าย โดยการใช้เมธอด AppendText() จากคลาส File สำหรับสร้างตัวแปรอ่านไฟล์

ในบทนี้ คุณได้เรียนรู้การทำงานกับไฟล์ในภาษา C# โดยการอ่านไฟล์และการเขียนไฟล์ เพื่อเก็บข้อมูลโดยเฉพาะอย่างยิ่งกับ Text file และการเขียนต่อท้ายไฟล์เดิม


บทความเกี่ยวกับ Input/output with files

Input/output with files ในภาษา C

ในบทสุดท้ายของบทเรียนนี้ เราจะเรียนรู้เกี่ยวกับไฟล์ในภาษา C เช่น การเปิดไฟล์ การอ่านข้อมูลจากไฟล์ และการเขียนข้อมูลลงไปบนไฟล์ ทั้ง text file และ binary file ในก...

Input/output with files ในภาษา Java

ในบทนี้ คุณจะได้เรียนรู้การทำงานกับไฟล์ การอ่าน text file และการเขียนข้อมูลลงบน text file ในภาษา Java นอกจากหน่วยความจำสำรอง (ram) ที่สามารถเก็บข้อมูลได้ชั่วครา...

Input/output with files ในภาษา C++

ในบทสุดท้ายของบทเรียนภาษา C++ นี้ คุณจะได้เรียนการดำเนินการพื้นฐานกับไฟล์ โดยเราสามารถที่อ่านและเขียนบางอย่างลงไปใน text ไฟล์ fstream เป็นไลบรารีมาตรฐานที่ช่วยใ...

Input/output with files ในภาษา PHP

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับการอ่านเขียนข้อมูลกับไฟล์ในภาษา PHP เราจะทำงานกับ Text filesในการเขียนโปรแกรม เรามักจะทำงานกับไฟล์ซึ่งอาจจะเป็น Text file หรือ ...

Input/output with files ในภาษา Visual Basic

ในบทนี้เราจะทำงานกับไฟล์ คุณจะได้เรียนรู้เกี่ยวกับการอ่านและเขียน text file ในภาษา Visual Basicโปรแกรมคอมพิวเตอร์มักจะทำงานกับไฟล์ ไฟล์ใช้สำหรับเก็บข้อมูลบนหน่ว...