os

  1. 传入参数
argvs := os.Args
t := argvs[1]
w := argvs[2]
s := argvs[3]

传入的参数需要做判断,go中没有像py一样的三元运算,所以需要一一判断
if t == "" {
	t = "10"
}
if w == "" {
	w = "200"
}
if s == "" {
	s = "32"
}
然后参数就可以使用了

import "os"







关闭标准输出后,fmt打印无法生效,


正常使用fmt.scan,会使用用户数据的数据,当os.Stdin.Close()后,用户输入scan失效,默认空值为0.

  • 写入

package main

import (
	"fmt"
	"os"
)

func WriteFile(path string) {
	//打开文件,新建文件
	f, err := os.Create(path)
	if err != nil {
		//等于空。说明出错
		fmt.Println("err", err)
		return
	}
	defer f.Close()
	var buf string
	for i := 0; i < 10; i++ {
		buf = fmt.Sprintf("i = %d\n", i)
		fmt.Println("buf", buf)
		n, err := f.WriteString(buf)
		if err != nil {
			fmt.Println("err", err)
		}

		fmt.Println("n = ", n)

	}

}

func main() {
	path := "./first_fo_file.tx"
	WriteFile(path)

}

buf = fmt.Sprintf("i = %d\n", i) Sprintf函数将格式化的字符串存到缓存中,并返回,f就可以使用WriteString函数将返回的缓存数据写入到文件中。



缓存区buf是一个切片,可以定义接受的大小,使用f.Read(buf)得到的是读到的内容长度,和一个错误返回值,
io.EOF意味着文件读到了结尾,已经读完了
string(buf[:n]) 从0开始读到文件结尾,string将切片转换成字符串

按照行来读

import bufio


可以看到在读取到的内容中,也把文件每行的换行符\n读取到了,使得printf中没有设置换行也执行了换行。

拷贝文件实例

package main

import (
	"io"
	"os"
	"fmt"
)

func main()  {
	list := os.Args
	// 获取命令行参数
	if len(list) != 3{
		fmt.Println("useage: xxx srcfile dstfile")
		return
	}

	srcfilename := list[1]
	dstfilename := list[2]
	if srcfilename == dstfilename{
		fmt.Println("源文件不能与目标文件重名")
	}
	sf,err1 := os.Open(srcfilename)
	if err1 != nil{
		fmt.Println("err1:" ,err1)
		return
	}

	//新建目的文件
	df,err2 := os.Create(dstfilename)
	if err2 != nil{
		fmt.Println("err2: ",err2)
		return
	}


	//操作完毕关闭文件
	defer sf.Close()
	defer df.Close()

	//从源文件读,写入目标文件,读多少写多少
	buf := make([]byte, 4*1024)
	for{
		n,err := sf.Read(buf)
		if err != nil{
			if err == io.EOF{
				break; //跳出循环的条件,读到文件结尾
			}
			fmt.Println("err",err)

		}
		//写入目的文件,读多少写多少
		df.Write(buf[:n])
		
	}
} 

os.Chmod(sting,filemod)
更改文件权限,

os.Stat(filaname)
文件状态
os.IsNotExist()

判断文件是否存在

/**
 * 判断文件是否存在  存在返回 true 不存在返回false
 */
func checkFileIsExist(filename string) bool {
	var exist = true
	if _, err := os.Stat(filename); os.IsNotExist(err) {
		exist = false
	}
	return exist
}

os.Hostname()

返回的是主机名跟一个错误接口

package main

import (
	"fmt"
	"os"
)

func main() {
	host, err := os.Hostname()
	if err != nil {
		fmt.Printf("%s", err)
	} else {
		fmt.Printf("%s", host)
	}
}
posted @ 2019-09-08 09:52  π=3.1415926  阅读(202)  评论(0编辑  收藏  举报