zoukankan      html  css  js  c++  java
  • 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
    ", 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 ", i) Sprintf函数将格式化的字符串存到缓存中,并返回,f就可以使用WriteString函数将返回的缓存数据写入到文件中。



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

    按照行来读

    import bufio


    可以看到在读取到的内容中,也把文件每行的换行符 读取到了,使得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)
    	}
    }
    
  • 相关阅读:
    Java异常处理和设计
    一次qps测试实践
    Alternate Task UVA
    Just Another Problem UVA
    Lattice Point or Not UVA
    Play with Floor and Ceil UVA
    Exploring Pyramids UVALive
    Cheerleaders UVA
    Triangle Counting UVA
    Square Numbers UVA
  • 原文地址:https://www.cnblogs.com/cizao/p/11484454.html
Copyright © 2011-2022 走看看