Go 尝试将提取的文件名插入到单个文件中

Go 尝试将提取的文件名插入到单个文件中,go,Go,这个程序获取目录名并读取目录中的所有文件。在此之后,我收集文件名并尝试将所有文件名插入一个新文件,但我只获取最后一个索引,我想将所有文件名存储到一个文件中 package main import ( "flag" "fmt" "log" "os" "regexp" ) func readCurrentDir(folderpath string) { file, err := os.Open(folderpath) if err != n

这个程序获取目录名并读取目录中的所有文件。在此之后,我收集文件名并尝试将所有文件名插入一个新文件,但我只获取最后一个索引,我想将所有文件名存储到一个文件中

package main

import (
    "flag"
    "fmt"
    "log"
    "os"
    "regexp"
)

func readCurrentDir(folderpath string) {
    file, err := os.Open(folderpath)
    if err != nil {
        log.Println("failed opening directory: ", err)
        os.Exit(1)
    }
    defer file.Close()

    list, _ := file.Readdirnames(0) // 0 to read all files and folders
    for _, name := range list {
        getDomainFromFile(name)
    }
}

func CreateDomainsFile(domains string) {
    filename, err := os.Create("All-Sitemap-Domains.txt")
    if err != nil {
        log.Println("Error to create txt file", err)
    }
    defer filename.Close()
    writestrings, err := filename.WriteString(domains)
    if err != nil {
        log.Println("Error to append data into txt file", err)
    }
    log.Println("Successfully data insetred into txt file")
    fmt.Printf("wrote %d bytes\n", writestrings)
    filename.Sync()
}

func getDomainFromFile(PageContent string) {
    re := regexp.MustCompile(`(.*)-robots.txt`)
    // re := regexp.MustCompile(`Sitemap: (.*)`)
    FileToDomain := re.FindAllStringSubmatch(PageContent, -1)
    for _, Domain := range FileToDomain {
        log.Println(Domain[1])
        // log.Println(Domain[1])
        fmt.Println("*************************************************************")
        CreateDomainsFile(string(Domain[1]))
        return
    }

}
func main() {
    folder := flag.String("f", "", "Provide the path of the folder")
    flag.Parse()
    readCurrentDir(*folder)

}

您一次又一次地创建文件,所以这就是您只获取最后一个值的原因。如果要插入值,请使用此选项

文件名,os.O_追加| os.O_创建| os.O_WRONLY,0644


import (
    "flag"
    "fmt"
    "log"
    "os"
    "regexp"
)

func readCurrentDir(folderpath string) {
    file, err := os.Open(folderpath)
    if err != nil {
        log.Println("failed opening directory: ", err)
        os.Exit(1)
    }
    defer file.Close()

    list, _ := file.Readdirnames(0) // 0 to read all files and folders
    for _, name := range list {
        getDomainFromFile(name)
    }
}


func CreateDomainsFile(domains string) {
    filename, err := os.OpenFile("All-Sitemap-Domains.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
    if err != nil {
        log.Println("Error to create txt file", err)
    }
    defer filename.Close()
    writestrings, err := filename.WriteString(domains + "\n")
    if err != nil {
        log.Println("Error to append data into txt file", err)
    }
    log.Println("Successfully data insetred into txt file")
    fmt.Printf("wrote %d bytes\n", writestrings)
    filename.Sync()
}

func getDomainFromFile(PageContent string) {
    re := regexp.MustCompile(`(.*)-robots.txt`)
    FileToDomain := re.FindAllStringSubmatch(PageContent, -1)
    for _, Domain := range FileToDomain {
        log.Println(Domain[1])
        fmt.Println("*************************************************************")
        CreateDomainsFile(string(Domain[1]))
        return
    }

}
func main() {
    // http.HandleFunc("/", index_handler)
    // http.HandleFunc("/sitemap_Domains/", showData)
    // fmt.Println("Development Server Started localhost:8081")
    // http.ListenAndServe(":8081", nil)

    folder := flag.String("f", "", "Provide the path of the folder")
    flag.Parse()
    readCurrentDir(*folder)

}

首先,您可以将所有文件读入一个数组:

//ListFile被委托从给定目录中查找文件,递归地查找每个目录
func列表文件(路径字符串)[]字符串{
文件列表:=[]字符串{}
//递归读取所有文件
err:=filepath.Walk(路径,func(文件字符串,f os.FileInfo,err error)错误{
如果是IsFile(文件){
fileList=append(文件列表,文件)
}
归零
})
如果错误!=零{
log.Println(错误)
归零
}
返回文件列表
}
然后可以逐行写入文件:

func writeFile(数据[]字符串){
f、 err:=os.OpenFile(“所有站点地图域.txt”,os.O_APPEND | os.O_CREATE | os.O_WRONLY,0644)
如果错误!=零{
Println(“创建txt文件时出错”,err)
返回
}
延迟f.关闭()
对于i:=范围数据{
f、 WriteString(数据[i]+“\n”)
}
}

您的
os.Create
是否会在每次调用
CreateDomainsFile()
func时删除您的文件?