为下一个项目作准备,先写客户端的前半部分

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)
	}

}

  技术图片

以上是关于为下一个项目作准备,先写客户端的前半部分的主要内容,如果未能解决你的问题,请参考以下文章

网站前端_JavaScript-项目经验.纯JavaScript实现客户端的分页功能?

前半部分透明,后半部分标题的按钮

ThinkPHP项目笔记之登录,注册,安全退出篇

网络编程 实现 客户端与服务器端的简单通信

使用 Apollo 客户端的片段组合:约定和样板

质量六大属性之可用性在代码端的实现