Golang程序 用于获取一个目录中的所有文件

Golang程序 用于获取一个目录中的所有文件

Golang有一些操作系统包,如OS.open(), os.closs(), os.copy()以及更多用于对外部文件进行不同的操作。同时,我们在Golang中还有io包,用于对外部文件进行读写操作。在这篇文章中,我们将使用这两个包来打印指定目录下的所有文件。

方法1:使用操作系统包

这个程序打开所提供的目录并使用os包读取其内容。返回一片os.FileInfo对象,这些对象由Readdir函数返回,包括目录中每个文件的详细信息。文件的名称在Name方法返回后被打印出来。

语法

Os.Open()

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

算法

  • 第1步 – 创建一个包main,并在程序中声明fmt(格式包)和os包,其中main产生可执行代码,fmt帮助格式化输入和输出。

  • 第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
   }
}

输出

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

输出

main.go

结论

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程