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

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


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)


}



慕森王
浏览 105回答 2
2回答

catspeake

首先,您可以将所有文件读入一个数组:// ListFile is delegated to find the files from the given directory, recursively for each dirfunc ListFile(path string) []string {    fileList := []string{}    // Read all the file recursively    err := filepath.Walk(path, func(file string, f os.FileInfo, err error) error {        if IsFile(file) {            fileList = append(fileList, file)        }        return nil    })    if err != nil {        log.Println(err)        return nil    }    return fileList}比你可以逐行编写文件:func writeFile(data []string){    f, 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)        return    }    defer f.Close()    for i := range data{       f.WriteString(data[i]+"\n")            }}

胡说叔叔

您一次又一次地创建文件,这就是您只获得最后一个值的原因,如果您想插入值,请使用它文件名,os.O_APPEND|os.O_CREATE|os.O_WRONLY,0644import (    "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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go