2 回答

TA贡献1111条经验 获得超0个赞
首先,您可以将所有文件读入一个数组:
// ListFile is delegated to find the files from the given directory, recursively for each dir
func 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")
}
}

TA贡献1804条经验 获得超8个赞
您一次又一次地创建文件,这就是您只获得最后一个值的原因,如果您想插入值,请使用它
文件名,os.O_APPEND|os.O_CREATE|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)
}
- 2 回答
- 0 关注
- 104 浏览
添加回答
举报