为下一个项目作准备,先写客户端的前半部分
Posted aguncn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为下一个项目作准备,先写客户端的前半部分相关的知识,希望对你有一定的参考价值。
代码只有自己懂了,
写得比较肿,以后再优化吧。
就是每天定期,或是每次生成软件包时,收集软件包的信息,
发送到go的api接口,
然后,再作数据分析。
utils.go
package main import ( "bufio" "fmt" "io" "io/ioutil" "os" "path/filepath" ) func GetAllFile(pathname string, files []string) ([]string, error) { fromSlash := filepath.FromSlash(pathname) //fmt.Println(fromSlash) rd, err := ioutil.ReadDir(fromSlash) if err != nil { //log.LOGGER("Error").Error("read dir fail %v ", err) fmt.Println("read dir fail:", err) return files, err } for _, fi := range rd { if fi.IsDir() { fullDir := filepath.Join(fromSlash, fi.Name()) files, err = GetAllFile(fullDir, files) if err != nil { fmt.Println("read dir fail:", err) //log.LOGGER("Error").Error("read dir fail: %v ", err) return files, err } } else { fullName := filepath.Join(fromSlash, fi.Name()) files = append(files, fullName) } } return files, nil } func WritetoFile(fileName string, content []string) error { f, err := os.OpenFile(fileName, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) if err != nil { fmt.Printf("create map file error: %v ", err) return err } defer f.Close() w := bufio.NewWriter(f) for _, item := range content { fmt.Fprintln(w, item) } return w.Flush() } func ReadFromFile(fileName string) ([]string, error) { content := []string{} fi, err := os.Open(fileName) if err != nil { fmt.Printf("Error: %s ", err) return nil, err } defer fi.Close() br := bufio.NewReader(fi) for { item, _, c := br.ReadLine() if c == io.EOF { break } content = append(content, string(item)) } return content, nil }
main.go
package main import ( "fmt" ) func main() { var oldContent, newContent []string logFile := "D:\\temp\\log.txt" oldContent, err := ReadFromFile(logFile) if err != nil { panic(err) } for i, v := range oldContent { fmt.Println(i, v) } newContent, err = GetAllFile("D:\\software", newContent) if err != nil { panic(err) } err = WritetoFile(logFile, newContent) if err != nil { panic(err) } }
以上是关于为下一个项目作准备,先写客户端的前半部分的主要内容,如果未能解决你的问题,请参考以下文章