Arrays 如何将项目附加到GoLang中的[]os.FileInfo
我正在创建一个类似ioutil.ReadDir()的函数,但由于递归原因,我希望文件夹和子文件夹中的所有文件,而ioutil.ReadDir()只在指定的文件夹中执行,但我不知道如何将项附加到我创建的[]os.FileInfo数组中 这就是我所拥有的:Arrays 如何将项目附加到GoLang中的[]os.FileInfo,arrays,go,fileinfo,Arrays,Go,Fileinfo,我正在创建一个类似ioutil.ReadDir()的函数,但由于递归原因,我希望文件夹和子文件夹中的所有文件,而ioutil.ReadDir()只在指定的文件夹中执行,但我不知道如何将项附加到我创建的[]os.FileInfo数组中 这就是我所拥有的: func GetFilesRecursively(searchDirectory string) (foundFileList []os.FileInfo, errorGenerated error){ fileList := []os.
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数组中。这是一个类型错误 下面是代码的一个版本,它可以实现您想要的功能,看起来更像,具有较短的变量名、未命名的返回类型(它们的类型完全描述了它们的功能)以及使用
var
创建空片段
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
}
错误是什么?Adrian,这是一个错误:“不能在append中使用文件(类型字符串)作为os.FileInfo类型”,这似乎很清楚。您正在尝试将
文件
(文件路径,如错误所示,为字符串
)附加到[]os.FileInfo
,该文件只接受os.FileInfo
类型的元素。您可能想将fileInfo
变量附加到切片,而不是file
variable.fileList=append(fileList,fileInfo)您是对的@Uvelichitel!我试过了,它成功了。