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时删除您的文件?