มีหลายสถานการณ์ที่ต้องทำงานกับไฟล์ใน Java เช่น สร้างไฟล์เก็บผลลัพธ์โปรแกรม หรืออ่านข้อมูลจากไฟล์มาประมวลผล
นี่คือที่มาของไลบรารี java.io ซึ่งมีเมธอดมากมายสำหรับจัดการไฟล์ใน Java
บทช่วยสอนนี้อธิบายการใช้งานคลาส File, FileReader, FileWriter และเมธอดหลัก พร้อมตัวอย่างแต่ละเมธอด
ไฟล์ใน Java
ไฟล์ (Files) = รายการในคอมพิวเตอร์เก็บข้อมูลเฉพาะ เช่น รายชื่อนักเรียนชั้นคณิตศาสตร์ หรือส่วนผสมทำเค้กกาแฟ Directories = โฟลเดอร์เก็บไฟล์และไดเรกทอรี่อื่นๆ
java.io มีแพ็กเกจหลายอย่างสำหรับไฟล์และไดเรกทอรี่ บทนี้เน้น File, FileReader, FileWriter
เมธอดเหล่านี้เป็น external package ต้อง import ก่อนใช้:
import java.io.File; import java.io.FileReader; import java.io.FileWriter;
สร้างไฟล์ใน Java
คลาส File ใช้สร้างไฟล์ว่างใน Java
ก่อนสร้างไฟล์ ต้องสร้าง File object ก่อน - เป็น representation ของไฟล์/โฟลเดอร์ในโค้ด แต่ออบเจ็กต์เพียงอย่างเดียวไม่สร้างไฟล์จริง ต้องสร้าง object แล้วใช้สร้างไฟล์
ไวยากรณ์สร้าง File object:
File fileName = new File(String filePath);
สร้างออบเจ็กต์ fileName อ้างอิงไฟล์/โฟลเดอร์ที่ path ที่ระบุ
ใช้เมธอด createNewFile() สร้างไฟล์จริง ที่ path ที่ระบุ คืนค่า true ถ้าสร้างสำเร็จ false ถ้ามีไฟล์อยู่แล้ว
ตัวอย่าง: สร้างไฟล์เก็บผลวิเคราะห์หุ้น
โปรแกรมวิเคราะห์หุ้น S&P 500 ปี 2019 ต้องการสร้างไฟล์เก็บ insights
import java.io.File;
class CreateFile {
public static void main(String[] args) {
File resultsFile = new File("/home/data_analysis/2019sandp500/result.txt");
boolean fileCreated = resultsFile.createNewFile();
if (fileCreated) {
System.out.println("The results file has been created.");
} else {
System.out.println("The results file already exists.");
}
}
}
รันโค้ด -> สร้างไฟล์ที่ path แล้วพิมพ์ "The results file has been created." ถ้ามีอยู่แล้ว -> "The results file already exists."
อธิบาย: import java.io.File สร้าง class CreateFile สร้าง file object resultsFile ที่ path ใช้ createNewFile() สร้างไฟล์ เก็บผลลัพธ์ boolean ไว้ fileCreated if fileCreated=true -> พิมพ์สร้างสำเร็จ else -> พิมพ์มีอยู่แล้ว
อ่านไฟล์ใน Java
เมธอด read() ในคลาส FileReader ใช้อ่านเนื้อหาไฟล์
สมมติมีไฟล์ /home/data_analysis/2019sandp500/raw_message.txt เนื้อหา: JAVA S&P 500 ANALYSIS PROGRAM
import java.io.FileReader;
class Main {
public static void main(String[] args) {
char[] array = new char[100];
try {
FileReader fileContents = new FileReader("/home/data_analysis/2019sandp500/raw_message.txt");
fileContents.read(array);
System.out.println(array);
fileContents.close();
} catch(Exception error) {
error.getStackTrace();
}
}
}
ผลลัพธ์: JAVA S&P 500 ANALYSIS PROGRAM
อธิบาย: ใช้ FileReader สร้าง file object อ่านไฟล์ ใช้ read() อ่านเข้า array พิมพ์ array ปิดไฟล์ด้วย close()
เขียนไฟล์ใน Java
เมธอด write() จาก FileWriter ใช้เขียนไฟล์
สมมติเขียนวันนี้ลงบนสุดไฟล์ผลลัพธ์ /home/data_analysis/2019sandp500/results.txt
import java.io.FileWriter;
class Main {
public static void main(String args[]) {
String date = "Thursday, March 12th";
try {
FileWriter writeToFile = new FileWriter("/home/data_analysis/2019sandp500/results.txt");
writeToFile.write(date);
writeToFile.close();
System.out.println("The date has been written to the file.");
} catch (Exception error) {
error.getStackTrace();
}
}
}
โค้ดเขียน "Thursday, March 12th" ลงไฟล์ results.txt พิมพ์ "The date has been written to the file."
อธิบาย: FileWriter สร้าง representation ของไฟล์ write() เขียน string ลงไฟล์ close() ปิดไฟล์
ลบไฟล์ใน Java
แพ็กเกจ File มีเมธอด delete() ลบไฟล์หรือไดเรกทอรี่ คืน true ถ้าลบสำเร็จ false ถ้าไม่มีไฟล์ เพิ่มเติม: delete() ลบไดเรกทอรี่ว่างเปล่าได้อย่างเดียว
สมมติลบ results.txt ตอนเริ่มโปรแกรม เพื่อเขียนข้อมูลใหม่ภายหลัง
import java.io.File;
class Main {
public static void main(String[] args) {
File results = new File("/home/data_analysis/2019sandp500/results.txt");
boolean deleteFile = results.delete();
if (deleteFile) {
System.out.println("results.txt has been deleted.");
} else {
System.out.println("results.txt has not been deleted.");
}
}
}
ผลลัพธ์: results.txt has been deleted.
อธิบาย: สร้าง File object results อ้างอิง results.txt ใช้ delete() ลบ ไม่ว่าจะสำเร็จพิมพ์ข้อความตาม boolean
สรุป
File: สร้างและลบไฟล์FileReader: อ่านเนื้อหาไฟล์FileWriter: เขียนข้อมูลลงไฟล์
บทช่วยสอนนี้อธิบายการใช้งาน File, FileReader, FileWriter พร้อมตัวอย่าง ตอนนี้คุณพร้อมทำงานกับไฟล์ใน Java อย่างมืออาชีพแล้ว!