Cách tương tác với tệp và thư mục trong Go

Cách tương tác với tệp và thư mục trong Go
Độc giả như bạn giúp hỗ trợ MUO. Khi bạn mua hàng bằng các liên kết trên trang web của chúng tôi, chúng tôi có thể kiếm được hoa hồng liên kết. Đọc thêm.

Làm việc với tệp và thư mục là công việc cần thiết đối với các ứng dụng cần lưu trữ và truy xuất dữ liệu. Go cung cấp gói filepath cho các hoạt động đường dẫn tệp độc lập với nền tảng. Gói này bao gồm các chức năng để thao tác đường dẫn tệp và nó tương thích với Windows, Linux và macOS.





Các chức năng mà filepath bao gồm có thể nối, tách và làm sạch đường dẫn tệp để đảm bảo chúng hợp lệ. Gói này cũng có các chức năng để đi bộ thư mục và tìm kiếm tệp.





LÀM VIDEO TRONG NGÀY

Cây thư mục đi bộ

Các Đi bộ chức năng của đường dẫn tập tin gói cung cấp chức năng để duyệt cây thư mục và duyệt qua các tệp và thư mục theo cách đặt hàng trước. Nó sẽ truy cập đệ quy tất cả các thư mục bên dưới gốc đã cho. Hàm Walk nhận một thư mục gốc và một hàm nhận đường dẫn, phiên bản thông tin tệp và phiên bản lỗi.





 package main 

import (
    "fmt"
    "path/filepath"
    "os"
)

func main() {
    // Defines the root directory to start the walk
    root := "."

    // Uses the Walk function to walk the directory tree
    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }

        // Prints the name of each file or directory
        fmt.Println(path)
        return nil
    })

    // Checks for errors
    if err != nil {
        fmt.Printf("Error walking directory tree: %v\n", err)
    }
}

Chương trình này định nghĩa thư mục gốc là thư mục làm việc hiện tại. Các chủ yếu chức năng duyệt qua các thư mục trong thư mục gốc và in ra tên của các tệp.

mã dừng trang bị lỗi phần cứng bị lỗi
  kết quả từ Walking Directory Trees

Khớp tệp với khớp mẫu

Bạn có thể dùng Cuộc thi đấu để khớp tên tệp với một mẫu. Cú pháp mẫu được dựa trên chung cú pháp ký tự đại diện tệp, sử dụng siêu ký tự , được gọi là các mẫu toàn cầu trong môi trường Unix.



 package main 

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Defines the pattern to match
    pattern := "*.txt"

    // Uses the Match function to match the pattern on files
    match, err := filepath.Match(pattern, "file.txt")

    if err != nil {
        fmt.Printf("Error matching pattern: %v\n", err)
        return
    }

    // Prints the result of the match
    if match {
        fmt.Println("File matches pattern.")
    } else {
        fmt.Println("File does not match pattern.")
    }
}

Các chủ yếu hàm khớp tên tệp với *.txt mẫu và in một chuỗi tùy thuộc vào kết quả của câu điều kiện .

Làm sạch đường dẫn với chức năng làm sạch

Các Lau dọn hàm nhận một đường dẫn tệp và trả về một phiên bản đường dẫn đã được làm sạch bằng cách loại bỏ các dấu phân tách không cần thiết và các thay đổi thư mục, chẳng hạn như . (thư mục hiện tại) và .. (thư mục mẹ) phân đoạn.





Làm sạch đường dẫn tệp rất hữu ích vì nó giúp tránh lỗi nếu đường dẫn chứa dấu phân cách thừa hoặc phân đoạn không hợp lệ hoặc xây dựng đường dẫn độc lập với thư mục làm việc hiện tại.

 package main 

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Creates a path with redundant separators and invalid segments
    path := "/foo/bar//baz/.././qux/"

    // Cleans the path
    cleanPath := filepath.Clean(path)

    // Prints the original and cleaned file paths
    fmt.Println("Original path:", path)
    fmt.Println("Cleaned path:", cleanPath)
}

Các con đường biến là đường dẫn tệp ban đầu và Lau dọn chức năng làm sạch con đường biến và trả về đường dẫn tệp đã được làm sạch. Các chủ yếu chức năng in các đường dẫn tệp ban đầu và sạch.





  kết quả từ Làm sạch Đường dẫn Với Chức năng Làm sạch

Nối và tách đường dẫn tệp trong Go

Các Tham gia Tách ra chức năng cung cấp chức năng nối và chia đường dẫn tệp.

Hàm Join nhận bất kỳ số phần tử đường dẫn nào. Nó trả về một chuỗi đường dẫn tệp duy nhất là kết quả của việc nối các phần tử đó bằng cách sử dụng dấu tách đường dẫn thích hợp cho hệ điều hành. Các Tham gia chức năng này rất hữu ích để xây dựng các đường dẫn tệp độc lập với hệ thống tệp bên dưới.

 package main 

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Defines four file paths for the join operation
    path1 := "folder1"
    path2 := "folder2"
    path3 := "subfolder1"
    path4 := "example.txt"

    // Joins the four file paths together into a single path
    joinedPath := filepath.Join(path1, path2, path3, path4)

    // Print the unified file path
    fmt.Println("Joined Path:", joinedPath)
}

Các con đường1 , đường dẫn2 , Và con đường3 các biến là tên thư mục và con đường4 biến là một tên tập tin. Các Tham gia hàm lấy tên biến đường dẫn và trả về đường dẫn tệp được nối. Các chủ yếu chức năng in đường dẫn tệp nối đến bàn điều khiển với fmt bưu kiện.

tại sao tôi không nhận được thông báo trên iphone của mình

Các Tách ra hàm nhận vào một chuỗi đường dẫn và trả về các thành phần tên tệp và thư mục của đường dẫn. Các Tách ra chức năng này rất hữu ích để trích xuất tên tệp hoặc xác định thư mục mẹ của tệp.

 package main 

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Sets the file path for the split operation
    filePath := "/home/user/documents/example.txt"
    
    // Use the Split function to split the file path
    // into its directory and file components
    dir, file := filepath.Split(filePath)
    
    // Print the directory and file components
    fmt.Println("Directory:", dir)
    fmt.Println("File:", file)
}

Các đường dẫn tập tin biến là đường dẫn tệp gốc và Tách ra chức năng nhận trong đường dẫn tập tin biến và trả về thư mục và tên tệp dưới dạng chuỗi. Các chủ yếu hàm in tên thư mục và tệp ra bàn điều khiển.

Bạn có thể thao tác với các tệp văn bản bằng Go

Bên cạnh chức năng hệ thống tệp, Go cung cấp các gói để giúp bạn làm việc với nhiều loại tệp, bao gồm tệp văn bản.

Bạn có thể dùng bufio gói cho các hoạt động đầu vào và đầu ra được đệm trên các tệp văn bản và Bạn gói để tạo tệp, trong số các hoạt động khác.