随机数+时间格式+读写文件+log日志

package main

import (
	"bufio"
	"fmt"
	"io"
	"io/ioutil"
	"log"
	"math/rand"
	"os"
	"path/filepath"
	"strings"
	"time"
)

func genRand() {
	source := rand.NewSource(2023)
	rander := rand.New(source)
	for i := 0; i < 10; i++ {
		fmt.Printf("%d", rander.Intn(100))
	}
	fmt.Println()
	source.Seed(2023)
	rander2 := rand.New(source)
	for i := 0; i < 10; i++ {
		fmt.Printf("%d", rander2.Intn(100))
	}
	fmt.Println()
	for i := 0; i < 10; i++ {
		fmt.Printf("%d", rand.Intn(100))
	}
}

func T() {

	now := time.Now()
	time_fmt := "2006-01-02 15:04:05"
	// ts := now.Format(time_fmt)
	loc, _ := time.LoadLocation("Asia/Shanghai")
	t0, e := time.ParseInLocation(time_fmt, "2022-08-25 11:10:19", loc) //时刻
	fmt.Println(now)
	// fmt.Println(ts)
	// fmt.Println(t)

	// t, e := time.Parse("2006-01-02 15:04:05", ts)
	if e != nil {
		fmt.Println("error")
	} else {
		// fmt.Println(t.Year(), int(t.Month()), t.Day())
		//两个时刻相差多少分钟
		t1 := time.Now()
		d1 := t1.Sub(t0)
		fmt.Println(d1)

		d2 := time.Since(t0)
		fmt.Println(d2)

		//指定时刻添加1小时
		d3 := time.Duration(time.Hour)
		t3 := t0.Add(d3)
		fmt.Println(t3.Format(time_fmt))
		if t3.After(t0) {
			fmt.Println("t3晚于t0")
		}
		//拿到时刻 转换当前时间戳
		fmt.Printf("T3的时间戳 %d %d\n", t3.Unix(), t3.UnixMilli())
		//当前时刻是一年的第多少天,当前周几
		fmt.Println(t3.YearDay(), int(t3.Weekday()))
	}

	// fmt.Println(loc)
}

//定时器3秒执行
func timer() {
	tm := time.NewTimer(3 * time.Second)
	fmt.Println(time.Now().Unix())
	<-tm.C
	fmt.Println(time.Now().Unix())
	tm.Stop()

	fmt.Println(time.Now().Unix())
	<-time.After(3 * time.Second)
	fmt.Println(time.Now().Unix())
	tm.Stop()
}

//反复执行周期性执行
func ticker() {
	tk := time.NewTicker(1 * time.Second)
	for i := 0; i < 5; i++ {
		<-tk.C
		fmt.Println(time.Now().Unix())
	}
	tk.Stop()
}

//定时执行
func dingshi() {
	shi := "202208252000"
	t, _ := time.Parse("2016010215", shi)
	n := time.Now()
	d := t.Sub(n)
	<-time.After(d)
	fmt.Println("现在时间是", shi)

	//执行任务
	//go worker() //异步执行
	//每隔24小时在运行一次
	for {
		oneDay := time.Duration(24 * time.Hour)
		<-time.After(oneDay)
		//执行函数
		//go worker() //异步执行 开多线程执行
	}

}

//读二进制文件
func readFileBinary() {
	fin, err := os.Open("dir/a.txt")
	if err != nil {
		fmt.Printf("打开文件失败: %v\n", err)
	}
	defer fin.Close() //保证成功打开后 close
	count := make([]byte, 5)
	for {
		n, err := fin.Read(count) //n表示成功读取的字节数
		if err != nil {
			if err == io.EOF {
				if n > 0 {
					fmt.Println(count[:n])
				}
				break //读到文件末尾退出
			} else {
				fmt.Printf("读文件失败:%v\n", err)
			}
		} else {
			fmt.Println(count[:n]) //可能读不出5个所以展示n前。
		}
	}
	fin.Close()
}

//读文件文件
func readFileText() {
	fin, err := os.Open("dir/a.txt")
	if err != nil {
		fmt.Printf("打开文件失败: %v\n", err)
	}
	defer fin.Close() //保证成功打开后 close
	reader := bufio.NewReader(fin)
	for {
		line, err := reader.ReadString('\n')
		if err != nil {
			if err == io.EOF {
				break
			} else {
				fmt.Printf("读文件失败:%v\n", err)
			}
		} else {
			line = strings.TrimRight(line, "\n")
			fmt.Println(line)

		}
	}
}

//写文件
func writeFile() {
	f, err := os.OpenFile("dir/b.txt", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0777)
	if err != nil {
		fmt.Println("打开文件失败", err)
	}
	defer f.Close()
	writer := bufio.NewWriter(f)
	writer.WriteString("a\n")
	writer.WriteString("b\n")
	writer.WriteString("c\n")
	writer.Flush()
}

//递归遍历目录
func walk(path string) {
	subDirs, err := ioutil.ReadDir(path) //subDirs->path子目录
	if err != nil {
		return
	}
	for _, dir := range subDirs {
		if dir.IsDir() {
			walk(filepath.Join(path, dir.Name())) //递归拼接目录
		} else {
			if strings.HasSuffix(dir.Name(), ".txt") { //HasSuffix以.txt结尾
				fmt.Println(dir.Name())
			}
		}
	}
}

//打印日志
func lg() {
	f, err := os.OpenFile("dir/biz.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0777)
	if err != nil {
		fmt.Println("打开文件失败", err)
	}
	defer f.Close()
	logger := log.New(f, "web ", log.Ldate|log.Lmicroseconds)
	logger.Println("一行")
	logger.Println("一行")
	logger.Println("又一行")

}

func main() {
	// lg()

	// walk("dir")

	// writeFile()

	// readFileText()

	// readFileBinary()

	// dingshi()

	// ticker()

	// timer()

	// T()

	// genRand()


}

 

posted @ 2022-08-29 18:39  NeilyoX  阅读(34)  评论(0)    收藏  举报