arrays - 如何在 GoLang 中将项目附加到 []os.FileInfo

标签 arrays go fileinfo

我正在制作一个类似 ioutil.ReadDir() 的函数,但由于我想要文件夹和子文件夹中的所有文件而递归,而 ioutil.ReadDir() 只是在指定的文件夹中执行它,但我不知道如何附加项目到我创建的 []os.FileInfo 数组。

这是我的:

func GetFilesRecursively(searchDirectory string) (foundFileList []os.FileInfo, errorGenerated error){

   fileList := []os.FileInfo{}
   allFilesAndFolders := []string{}

   //Get all the files and directories
   err := filepath.Walk(searchDirectory, func(path string, f os.FileInfo, err error) error {
       allFilesAndFolders = append(allFilesAndFolders, path)
       return nil
   })

   // Remove directories due those are also added into the array and we don't need them
   for _, file := range allFilesAndFolders{

       fileInfo, _ := os.Stat(file)

       if (!fileInfo.Mode().IsDir()){
          fileList = append(fileList, file) //error here!!
       }
   }

   return fileList, err
}

错误在上面代码段的注释中

我该怎么做?

最佳答案

您尝试将字符串附加到 os.FileInfo 数组。这是一个类型错误。

这是你的代码版本,它可以做你想做的事情,看起来更像 Go,具有更短的变量名,未命名的返回类型(它们的类型完美地描述了它们所做的事情)并使用 var 来创建一个空 slice 。

func GetFilesRecursively(root string) ([]os.FileInfo, error) {
    var files []os.FileInfo

    // walk all directories but only collect files
    err := filepath.Walk(root, func(path string, f os.FileInfo, err error) error {
        if !f.IsDir() {
            files = append(files, f)
        }
        return nil
    })

    return files, err
}

关于arrays - 如何在 GoLang 中将项目附加到 []os.FileInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51410182/

相关文章:

arrays - 多维数组间接交互

go - A类满足B类要求

php - 如何判断一个MIME类型是JPG、PNG、BMP还是GIF?

string - 如何从 golang 中的字符串制作预告片?

c# - .NET FileInfo.LastWriteTime & FileInfo.LastAccessTime 是错误的

c# - 快速获取特定路径下的所有文件和目录

javascript - Array.each 输出所有方法

javascript - IndexedDB:您可以使用数组元素作为键或索引吗?

php - 函数作为数组值

go - 在go-zookeeper中创建后,节点数据为空