สนับสนุนโดย

วันจันทร์ที่ 24 ธันวาคม พ.ศ. 2561

Text File และการใช้งาน

สำหรับการเขียนโปรแกรมเพื่อ เขียน และอ่าน ข้อมูลลงในไฟล์ แบบที่ง่ายที่สุดจะเป็นการจัดการแบบข้อความ หรือที่เราเรียกกันว่า Text File นั่นเองครับ เพราะจะใช้โปรแกรมไหนมาเปิดก็ได้ ไม่ว่าจะเป็น Notepad, Editor ทั่วไป หรือแม้แต่เขียนโปรแกรมมาอ่านข้อมูลเองก็ทำได้ ไม่ว่าจะใช้ภาษาใดๆ



ลองมาดูตัวอย่างการเขียนโปรแกรมครับ  (ตัวอย่างนี้พาเขียน และอ่านข้อมูลในไฟล์)
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

// class Employee for Manage data
class Employee {
    public String name;
    public int salary;
    
    public Employee(String name, int salary) {
        this.name = name;
        this.salary = salary;
    }
}

// main software
public class TextFileTest {
    public static void main(String[] args) throws IOException {
        Employee[] staff = new Employee[3];
        
        // save all employee to text file
        staff[0] = new Employee("Tavon", 70000);
        staff[1] = new Employee("Mali", 40000);
        staff[2] = new Employee("Tilada", 30000);
        
        try (PrintWriter out = new PrintWriter("employee.dat", "utf-8")) {
            writeData(staff, out);
        }
        
        // retrieve all recoreds into a new array
        try (Scanner in = new Scanner(new FileInputStream("employee.dat"), "utf-8")) {
            Employee[] newStaff = readData(in);
            
            // print the newly read employee records
            for (Employee e : newStaff) {
                System.out.println(e.name + ", " + e.salary);
            }
        }
    }
    
    static void writeData(Employee[] employees, PrintWriter out) throws IOException {
        out.println(employees.length);
        
        for (Employee e : employees) {
            writeEmployee(out, e);
        }
    }
    
    static Employee[] readData(Scanner in) {
        int n = in.nextInt();
        in.nextLine(); // consume new line
        
        Employee[] employees = new Employee[n];
        
        for (int i = 0; i < n; i++) {
            employees[i] = readEmployee(in);
        }
        
        return employees;
    }
    
    static void writeEmployee(PrintWriter out, Employee e) {
        out.println(e.name + "|" + e.salary);
    }
    
    static Employee readEmployee(Scanner in) {
        String line = in.nextLine();
        String[] tokens = line.split("\\|");
        String name = tokens[0];
        int salary = Integer.parseInt(tokens[1]);
        
        return new Employee(name, salary);
    }
    
}

ผลการทำงาน
Tavon, 70000
Mali, 40000
Tilada, 30000

ไม่มีความคิดเห็น:

แสดงความคิดเห็น