golang 扫描文件夹

发布时间:2024-07-07 17:59:56

当我们在使用golang进行文件处理时,经常会遇到需要扫描某个文件夹的需求。本文将介绍如何使用golang来扫描文件夹,以及如何获取文件夹中的文件和子文件夹。

扫描文件夹

在golang中,我们可以使用`os`包中的`Open`函数来打开一个文件夹。为了方便操作,我们可以使用`filepath`包中的`Walk`函数来遍历文件夹中的所有文件和子文件夹。下面是一个简单的例子:

func scanFolder(folderPath string) {
    filepath.Walk(folderPath, func(path string, info os.FileInfo, err error) error {
        fmt.Println(path)
        return nil
    })
}

上述代码中,`folderPath`表示要扫描的文件夹路径。`Walk`函数会递归遍历该文件夹以及其所有子文件夹,并对每一个文件和子文件夹调用回调函数。在回调函数中,我们可以对每一个文件和子文件夹进行操作。

获取文件

除了打印文件路径外,我们还可以获取文件的详细信息。在上述例子中,`info`参数表示文件的信息,我们可以通过它获取文件的名称、大小、修改时间等等。下面是一个例子:

func scanFolder(folderPath string) {
    filepath.Walk(folderPath, func(path string, info os.FileInfo, err error) error {
        if !info.IsDir() {
            fmt.Println("File name:", info.Name())
            fmt.Println("File size:", info.Size())
            fmt.Println("File mod time:", info.ModTime())
        }
        return nil
    })
}

上述代码中,通过判断`info.IsDir()`的返回值是否为`true`来判断是否为文件。如果不是文件夹,则输出文件名称、大小和修改时间。

获取子文件夹

除了获取文件,我们还可以获取文件夹的信息。在回调函数中,通过判断`info.IsDir()`的返回值是否为`true`,我们可以获取子文件夹的路径。下面是一个例子:

func scanFolder(folderPath string) {
    filepath.Walk(folderPath, func(path string, info os.FileInfo, err error) error {
        if info.IsDir() {
            fmt.Println("Folder path:", path)
        }
        return nil
    })
}

上述代码中,通过判断`info.IsDir()`的返回值是否为`true`来判断是否为文件夹。如果是文件夹,则输出文件夹路径。

到此,我们已经学习了如何使用golang来扫描文件夹,并获取文件和子文件夹的信息。这个功能对于处理大量文件以及文件夹的应用场景非常有用。希望本文对你学习golang文件处理有所帮助!

相关推荐