Golang 获取目录中的所有文件

Golang 获取目录中的所有文件

Golang拥有一些OS包,例如OS.open()、os.closs()、os.copy(),以及用于执行与外部文件相关的不同操作的其他包。同样,在Golang中我们也有io包,用于对外部文件执行读取和写入操作。在本文中,我们将使用这两个包来打印给定目录中的所有文件。

方法1:使用OS包

该程序使用os包打开提供的目录并使用其内容。通过Readdir函数返回一系列os.FileInfo对象,在目录中返回有关每个文件的详细信息。在Name方法返回文件名后,将打印文件的名称。

语法

Os.Open()

这个函数是os包的一部分。它用于打开一个文件进行读取。它接受一个输入参数,即要打开的文件名。

步骤

  • 步骤1 - 在main包中创建一个程序,并声明fmt(格式化包)和os包。fmt用于格式化输入和输出,os用于生成可执行代码。

  • 步骤2 - 将要访问的文件夹赋给一个变量。

  • 步骤3 - 使用os.Open函数打开文件夹。

  • 步骤4 - 如果在打开文件夹过程中出现任何错误,则打印错误信息并返回。

  • 步骤5 - 使用defer关键字和close函数关闭已打开的文件。

  • 步骤6 - 使用Readdir函数读取文件夹中的文件,如果在读取过程中出现错误,则打印错误信息并返回。

  • 步骤7 - 使用fmt.Println()循环打印从文件夹中读取的文件到控制台。

示例

在这个示例中,我们将使用Readdir函数读取文件夹并打印文件。

package main
import (
   "fmt"
   "os"
)

func main() {
   directory := "./" // The current directory

   files, err := os.Open(directory) //open the directory to read files in the directory
   if err != nil {
      fmt.Println("error opening directory:", err) //print error if directory is not opened
      return
   }
   defer files.Close()    //close the directory opened

   fileInfos, err := files.Readdir(-1)  //read the files from the directory
   if err != nil {
      fmt.Println("error reading directory:", err)  //if directory is not read properly print error message
      return
   }
   for _, fileInfos := range fileInfos {
      fmt.Println(fileInfos.Name()) //print the files from directory
   }
}

输出

.cache
main.go

方法2:使用io/ioutil包

此方法使用ioutil包中的ReadDir函数来读取目录的内容,并返回一个os.FileInfo对象的片段。程序然后遍历这个片段,并像前面的示例一样使用Name方法打印每个文件的名称。

语法

Ioutil.ReadDir()

这个函数位于ioutil包中,用于读取当前工作文件所在的目录。它只有一个参数,即当前目录的位置。

步骤

  • 第1步 - 在主包中创建一个包main,并在程序中声明fmt(格式化包)、io/ioutil包,其中main用于生成可执行代码,fmt用于格式化输入和输出。

  • 第2步 - 创建一个目录变量,并为其指定要访问文件的目录。

  • 第3步 - 使用ioutil包中的ReadDir函数来读取目录中的文件。

  • 第4步 - 如果在读取目录中的文件时出现错误,则打印错误并返回。

  • 第5步 - 如果没有错误,则使用fmt.Println()打印目录中的文件。

示例

在这个示例中,我们将使用io/ioutil包的ioutil.ReadDir函数来获取目录中的文件。

package main
import (
   "fmt"
   "io/ioutil"
)

func main() {
   directory := "./" // The current directory

   files, err := ioutil.ReadDir(directory) //read the files from the directory
   if err != nil {
      fmt.Println("error reading directory:", err) //print error if directory is not read properly
      return
   }
   for _, file := range files {
      fmt.Println(file.Name()) //print the files from the directory
   }
}

输出

.cache
main.go

结论

我们执行了一个程序,使用两个示例获取目录中存在的所有文件。在第一个示例中,我们将使用os包函数,在第二个示例中,我们将使用io/ioutil包函数来执行该程序。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程