วิธีโต้ตอบกับไฟล์และไดเร็กทอรีใน Go

วิธีโต้ตอบกับไฟล์และไดเร็กทอรีใน Go
ผู้อ่านเช่นคุณช่วยสนับสนุน MUO เมื่อคุณทำการซื้อโดยใช้ลิงก์บนเว็บไซต์ของเรา เราอาจได้รับค่าคอมมิชชั่นจากพันธมิตร อ่านเพิ่มเติม.

การทำงานกับไฟล์และไดเร็กทอรีเป็นงานที่จำเป็นสำหรับแอปพลิเคชันที่ต้องจัดเก็บและดึงข้อมูล Go จัดเตรียมแพ็คเกจพาธไฟล์สำหรับการดำเนินการพาธไฟล์ที่ไม่ขึ้นกับแพลตฟอร์ม แพ็คเกจประกอบด้วยฟังก์ชั่นในการจัดการเส้นทางไฟล์และเข้ากันได้กับ Windows, Linux และ macOS





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





ทำไม apple watch ของฉันถึงตายเร็วจัง
สร้างวิดีโอประจำวัน

ต้นไม้ไดเรกทอรีเดิน

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





 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)
    }
}

โปรแกรมนี้กำหนดไดเร็กทอรีรูทเป็นไดเร็กทอรีการทำงานปัจจุบัน เดอะ หลัก ฟังก์ชันสำรวจผ่านไดเร็กทอรีในไดเร็กทอรีรากและพิมพ์ชื่อไฟล์ออกมา

  ผลลัพธ์จาก Walking Directory Tree

จับคู่ไฟล์ด้วยการจับคู่รูปแบบ

คุณสามารถใช้ จับคู่ ฟังก์ชันจับคู่ชื่อไฟล์กับรูปแบบ ไวยากรณ์ของรูปแบบขึ้นอยู่กับสามัญ ไวยากรณ์ไวด์การ์ดของไฟล์ซึ่งใช้อักขระเมตา ที่เรียกว่ารูปแบบลูกโลกในสภาพแวดล้อม 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.")
    }
}

เดอะ หลัก ฟังก์ชันจับคู่ชื่อไฟล์กับ *.txt รูปแบบและพิมพ์สตริงขึ้นอยู่กับผลลัพธ์ของ คำสั่งเงื่อนไข .

ทำความสะอาดเส้นทางด้วยฟังก์ชั่น Clean

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





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

ไม่สามารถเข้าถึงไซต์นี้ได้ การเชื่อมต่อถูกรีเซ็ต err_connection_reset
 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)
}

เดอะ เส้นทาง ตัวแปรคือเส้นทางไฟล์เริ่มต้นและไฟล์ ทำความสะอาด ฟังก์ชั่นทำความสะอาด เส้นทาง ตัวแปรและส่งกลับเส้นทางไฟล์ที่สะอาด เดอะ หลัก ฟังก์ชันพิมพ์เส้นทางไฟล์เริ่มต้นและสะอาด





  ผลลัพธ์จากการทำความสะอาดเส้นทางด้วยฟังก์ชัน Clean

การเข้าร่วมและแยกเส้นทางไฟล์ใน Go

เดอะ เข้าร่วม และ แยก ฟังก์ชันมีฟังก์ชันสำหรับการรวมและแยกพาธของไฟล์

ฟังก์ชันการเข้าร่วมใช้องค์ประกอบเส้นทางจำนวนเท่าใดก็ได้ โดยจะส่งคืนสตริงพาธไฟล์เดียวที่เป็นผลมาจากการต่อองค์ประกอบเหล่านั้นโดยใช้ตัวคั่นพาธที่เหมาะสมสำหรับระบบปฏิบัติการ เดอะ เข้าร่วม ฟังก์ชันนี้มีประโยชน์สำหรับการสร้างพาธของไฟล์โดยไม่ขึ้นกับระบบไฟล์พื้นฐาน

 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)
}

เดอะ เส้นทางที่ 1 , เส้นทางที่ 2 , และ เส้นทางที่ 3 ตัวแปรคือชื่อโฟลเดอร์และ เส้นทางที่ 4 ตัวแปรคือชื่อไฟล์ เดอะ เข้าร่วม ฟังก์ชันใช้ชื่อตัวแปรเส้นทางและส่งกลับเส้นทางไฟล์ที่ต่อกัน เดอะ หลัก ฟังก์ชันพิมพ์พาธไฟล์ที่ต่อกันไปยังคอนโซลด้วย เอฟเอ็มที บรรจุุภัณฑ์.

ดูหนังใหม่ฟรีโดยไม่ต้องดาวน์โหลด

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

 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)
}

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

คุณสามารถจัดการไฟล์ข้อความได้ด้วย Go

นอกเหนือจากการทำงานของระบบไฟล์แล้ว Go ยังมีแพ็คเกจที่จะช่วยให้คุณทำงานกับไฟล์หลายประเภท รวมถึงไฟล์ข้อความ

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