让狗啃文件

一步一步来

package main

import (
    "fmt"
    _ "io/ioutil"
)

func main() {
    fmt.Println("start...")
    fmt.Println("end...")
}

遇到多管闲事的狗imported and not used,导入了包,但是没有用到,在go语言中,这是不允许的,球猫说加_果然好用

path := "D:\\temp\\cy_data\\"
rd, _ := ioutil.ReadDir(path)
for _, fi := range rd {
    fmt.Println(fi.Name())
}

文件夹和文件都出来了,得研究一下怎么挑选

path := "D:\\temp\\cy_data\\"
rd, _ := ioutil.ReadDir(path)
for _, fi := range rd {
    if !fi.IsDir() {
        continue;
    }
    fullDir:= filepath.Join(path,fi.Name())
    fmt.Println(fullDir)
    c :=0
    rf, _ := ioutil.ReadDir(fullDir)
    for _, fn := range rf {
        if fn.IsDir() {
            continue;
        }
        c++
    }
    fmt.Println(c)
}

用fi.IsDir()终于快进入正题了
读文件

file, err := os.Open(fn)
if err != nil {
    fmt.Println("文件打开失败 = ", err)
}
defer file.Close()
reader := bufio.NewReader(file)
for {
    str, err := reader.ReadString('\n')
    if err == io.EOF {
        break
    }
    str = strings.Replace(str, "\n", "", -1)
    str = strings.Replace(str, "\r", "", -1)
    s := strings.Split(str, ",")
    fmt.Println(len(s))
}
fmt.Println("文件读取结束...")

写文件

outfile := filepath.Join(path,"gps.txt")
file, err := os.OpenFile(outfile, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
  fmt.Printf("打开文件错误= %v \n", err)
  return
}
defer file.Close()
writer := bufio.NewWriter(file)
writer.WriteString(ss+"\r\n")
writer.Flush()

一些狗笔记

1、可以导入的东西很多,没有用掉的一定要注释掉,变量也不允许存在没用到的
2、全局变量var ht map[string]string
3、字典初始化ht = make(map[string]string)
4、枚举文件夹rd, _ := ioutil.ReadDir(path)
5、类似foreach的for _, fi := range rd
6、文件的属性fi.IsDir()、fi.Name()
7、文件全名构造fullDir:= filepath.Join(path,fi.Name())
8、字典排序var SortString []string for k := range ht { SortString = append(SortString, k) } sort.Strings(SortString)
9、=赋值定义过的,:=定义并赋值,变量的数目和结果相同,不用的_
10、分割s := strings.Split(ht[k], ",")
11、字符串转数字dj, _ := strconv.ParseFloat(s[0], 64)
12、数字转字符串6位小数djStr := strconv.FormatFloat(dj, 'f', 6, 64)
13、输出fmt.Println可以用逗号分割不同类型
14、过程定义无返回值func f2(fn string)
15、替换str = strings.Replace(str, "\n", "", -1)
16、字典v,ok := ht[1] if ok { fmt.Println("再一次确认,已经存在key=",v) }
17、判断操作系统sysType := runtime.GOOS if sysType == "linux"
18、命令行输入 input := bufio.NewScanner(os.Stdin) if input.Scan() { line := input.Text() }

标签: none

添加新评论