How to interact with files and contacts in Go

Mastering how to use the file system with the useful functions below will greatly help your work. Here's how to interact with files and folders in Go .

Working with files and directories is a necessary task for applications that need to store and extract data. Go provides a file path package for platform independent file path operations. This package includes file path editing functions and is compatible with Windows, Linux, and macOS.

The functions included in the filepath can concatenate, split, and delete file paths to ensure they are valid. This package also has Walk directory constructors ,  file search.

Picture 1 of How to interact with files and contacts in Go

Walking directory tree

The Walk function of the filepath package provides the functionality to run a directory tree and traverse pre-sorted files and directories. It will recursively collect all directories below the provided root. The Walk function includes a root directory and the function includes the path, version file information, and errors.

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: %vn", err)     } }

 

This program defines the root directory as the current working directory. The main function passes through the directories in the root directory and outputs the names of the files.

Picture 2 of How to interact with files and contacts in Go

Match files and patterns

You can use the Match function to match a filename with a pattern. The template syntax is based on the normal file character syntax, using superscripts called global patterns in Unix environments.

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: %vn", err)         return     }     // Prints the result of the match     if match {         fmt.Println("File matches pattern.")     } else {         fmt.Println("File does not match pattern.")     } }

The main function matches a filename based on the *.txt pattern and prints a string depending on the result of the conditional statement.

Clean the path with the Clean . function

The Clean function takes a file path and returns a version of a path that has been cleaned up by removing unnecessary delimiters and changing directories such as ( . current directory) and .(parent directory). ) segment.

Cleaning file paths is useful because it helps to avoid errors that occur if a path has extra delimiters or invalid segments, or builds the path independently of the current working directory.

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

 

Make path the original file path. The Clean function cleans the path variable and returns the cleaned file path. The main function prints the original & cleaned file path.

Picture 3 of How to interact with files and contacts in Go

Concatenate and split file paths in Go

The Join and Split functions provide the functionality to join and split file paths. The Join function includes any number of path elements. It returns a file path string, resulting from concatenating elements with the appropriate path separator for the operating system. The Join function is useful in building file paths independent of the underlying file system.

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 variables path1 , path2 and path3 are directory names. The variable path4 is the filename. The Join function includes the path variable name and returns the path of the file to be joined. The main function prints the file path that is appended to the console with the fmt package .

The Split function takes a path string and returns the directory of the path and the elements in the filename. The Split function is useful in extracting filenames or determining the root directory of a file.

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 filePath variable is the original file path. The Split function includes a filePath variable . It returns the directory and filename as a string. The main function prints the directory and filename to the console.

Here's how to interact with files and directories in Go . Hope the article is useful to you.

Update 07 March 2023
Category

System

Mac OS X

Hardware

Game

Tech info

Technology

Science

Life

Application

Electric

Program

Mobile