07/09/2018, 11:13

Golang: Xoá Tất Cả Các File trong Thư Mục

Golang hỗ trợ package os dùng để thực hiện các tác vụ liên quan tới hệ điều hành bao gồm việc quản lý file trên hệ thống. Package os cung cấp một interface thống nhất và được sử dụng chung với các hệ điều hành khác nhau. Để xoá tất cả các file có trong một thư mục trên hệ thống sử dụng package os ...

Golang hỗ trợ package os dùng để thực hiện các tác vụ liên quan tới hệ điều hành bao gồm việc quản lý file trên hệ thống. Package os cung cấp một interface thống nhất và được sử dụng chung với các hệ điều hành khác nhau.

Để xoá tất cả các file có trong một thư mục trên hệ thống sử dụng package os trong Golang chúng ta sẽ cần thông qua 3 bước khác nhau và sử dụng kết hợp 3 public method trong mỗi bước:

  • Bước 1: Sử dụng os.Open để mở thư mục chứa tập tin muốn xoá.
  • Bước 2: Sử dụng os.Read để đọc tập tin trong thư mục đã được mở.
  • Bước 3: Sử dụng os.Remove để xoá tập tin.

Demo Code Xoá Tất Cả File Trong Thư Mục

Đoạn code sau đây sẽ thực hiện việc xoá tất cả các file trong thư mục /Users/codehub-vn/golang_tutorials/remove_files/ trên máy. Bạn cần thay đổi địa chỉ thư mục này bằng một thư mục dùng để kiểm tra việc xoá file trên máy tính bạn.

Trên máy bạn tạo tập tin test_remove_files.go với nội dung sau đây:

package main

import (
    "fmt"
    "os"
)

func main() {
    directory := fmt.Sprintf("%sUsers%scodehub-vn%sgolang_tutorials%sremove_files%s", string(os.PathSeparator))

    // Mở thư mục và đọc các tập tin bên trong (bước 1 + bước 2)
    dirRead, _ := os.Open(directory)
    dirFiles, _ := dirRead.Readdir(0)

    // Lặp qua các tập tin trong thư mục và xoá
    for _, file := range(dirFiles) {
        // Get name of file and its full path.
        fileName := file.Name()
        filePath := directory + fileName

        // Xoá file (bước 3)
        os.Remove(filePath)

        // Hiển thị thông báo file đã được xoá
        fmt.Println("Xoá file ở địa chỉ:", flelPath)
    }
}

Dòng code dầu tiên bên trong hàm main() chúng ta chyển đổi giá trị của constant os.PathSeparator về kiểu string:

string(os.PathSeparator)

Giá trị sau khi chuyển đổi được sử dụng là dấu phân cách giữa các thư mục. Do Linux sử dụng ký tự / để phân cách giữa các thư mục trong khi đó Windows lại sử dụng ký tự nên sử dụng os.PathSeparator sẽ đảm bảo code của chúng ta chạy đúng trên các hệ điều hành khác nhau.

Ngoài ra thì ở đoạn code trên bạn lưu ý cần import package os trước khi sử dụng.

Build, Run và Test

Chạy câu lệnh sau đây để build chương trình:

$ go build remove_files.go

Và sau đó chạy chương trình:

$ ./remove_files

Kiểm tra lại bằng cách liệt kê các file trong thư mục chứa file cần xoá:

$ ls /Users/codehub-vn/golang_tutorials/remove_files/

Chúc bạn thành công!

0