Как да взаимодействаме с файлове и директории в Go

Как да взаимодействаме с файлове и директории в Go
Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Работата с файлове и директории е основна задача за приложения, които трябва да съхраняват и извличат данни. Go предоставя пакета filepath за операции с файлови пътища, независими от платформата. Пакетът включва функции за манипулиране на файлови пътища и е съвместим с Windows, Linux и macOS.





Функциите, които filepath включва, могат да съединяват, разделят и почистват пътеки на файлове, за да гарантират, че са валидни. Пакетът има и функции за ходене по директории и търсене на файлове.





MAKEUSEOF ВИДЕО НА ДЕНЯ

Ходещи указателни дървета

The Разходка функция на файлова пътека пакетът предоставя функционалност за обхождане на дърво на директории и преминаване през файлове и директории по начин на предварителна поръчка. Той рекурсивно ще посети всички директории под дадения корен. Функцията 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)
    }
}

Тази програма определя основната директория като текуща работна директория. The основен функция преминава през директориите в основната директория и отпечатва имената на файловете.

как да запишете видео от уебсайт
  резултат от Walking Directory Trees

Съпоставяне на файлове със съпоставяне на шаблони

Можете да използвате Съвпада функция за съпоставяне на имена на файлове с шаблон. Синтаксисът на модела се основава на общия файлов синтаксис със заместващи символи, който използва метасимволи , известни като глобални модели в среди на 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.")
    }
}

The основен функция съвпада с име на файл срещу *.текст шаблон и отпечатва низ в зависимост от резултата от условното твърдение .

Почистване на пътеки с функцията Clean

The Чисто функцията приема път към файл и връща изчистена версия на път чрез премахване на ненужните разделители и промени в директорията, като напр. . (текуща директория) и .. (родителска директория) сегменти.





Почистването на пътищата на файловете е полезно, тъй като помага да се избегнат грешки, ако даден път съдържа излишни разделители или невалидни сегменти, или конструира пътища, независими от текущата работна директория.

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

The път променлива е първоначалният път на файла, а Чисто функция почиства път променлива и връща изчистения път на файла. The основен функцията отпечатва първоначалния и чист път на файла.





  резултат от почистване на пътеки с функцията Clean

Съединяване и разделяне на пътища на файлове в Go

The Присъединяване и Сплит функциите осигуряват функционалност за свързване и разделяне на файлови пътища.

Функцията Join приема произволен брой елементи на пътя. Той връща единичен низ на пътя на файла, който е резултат от свързването на тези елементи с помощта на подходящия разделител на пътя за операционната система. The Присъединяване функцията е полезна за конструиране на файлови пътища, независими от основната файлова система.

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

The път1 , път2 , и път3 променливите са имена на папки и път4 променлива е име на файл. The Присъединяване функцията приема имената на променливите на пътя и връща пътя на конкатенирания файл. The основен функцията отпечатва пътя на свързания файл към конзолата с fmt пакет.

някой се опита да ми хакне facebook

The Сплит функцията приема низ от пътя и връща директорията на пътя и компонентите на името на файла. The Сплит функцията е полезна за извличане на имена на файлове или определяне на родителската директория на файл.

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

The файлова пътека променлива е оригиналният път на файла, а Сплит функцията приема файлова пътека променлива и връща имената на директорията и файловете като низове. The основен функцията отпечатва имената на директорията и файловете на конзолата.

Можете да манипулирате текстови файлове с Go

Наред с функционалността на файловата система, Go предоставя пакети, които да ви помогнат да работите с множество типове файлове, включително текстови файлове.

Можете да използвате буфио пакет за буферирани входни и изходни операции върху текстови файлове и Вие пакет за създаване на файлове, наред с други операции.