go学习 day242 文件操作

案例:读取文件内容

package main

import (
	"fmt"
	"os"
)

func main() {
	// 打开文件
	file, err := os.Open("G:\\test\\test.txt")
	if err != nil {
		fmt.Println("open file err=",err)
	}

	// 打印文件
	fmt.Printf("file=%v",file)

	// 关闭文件
	err = file.Close()
	if err != nil {
		fmt.Println("关闭文件错误:",err)
	}

}


案例:将一个文件的内容,写入到另一个文件。文件已存在

package main

import (
	"fmt"
	"io/ioutil"
)


func main() {
	file1path:="G:\\test\\test1.txt"
	file2path:="G:\\test\\test4.txt"

	date,err := ioutil.ReadFile(file1path)
	if err != nil {
		fmt.Println("读取文件失败:",err)
		return
	}

	err1 := ioutil.WriteFile(file2path,date,0644)
	if err1 != nil {
		fmt.Println("写入文件报错:",err1)
	}

}

案例:将E盘下的2.png拷贝到G盘下为222.png。带缓存

package main

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

/*
copy 函数是io包提供的
拷贝文件:


 */

func CopyFile(dstFileName string,srcFileName string) (witten int64,err error) {
	srcfile,err := os.Open(srcFileName)
	if err != nil {
		fmt.Println("打开文件错误:",err)
	}

	defer srcfile.Close()

	read := bufio.NewReader(srcfile)

	distfile,err:= os.OpenFile(dstFileName,os.O_WRONLY|os.O_CREATE,0644,)
	if err != nil {
		fmt.Printf("打开文件报错了:",err)
		return
	}

	write := bufio.NewWriter(distfile)
	defer distfile.Close()

	return io.Copy(write,read)

}


func main() {
	secfile := "E:\\2.png"
	dstfile := "G:\\222.png"

	_,err:= CopyFile(dstfile,secfile)
	if err == nil {
		fmt.Printf("拷贝完成\n")
	}	else {
		fmt.Println("拷贝错误:",err)
	}



	fmt.Println()
}

os.args 是一个string的切片,用来存储所有命令行参数

点击查看代码
package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("命令行的参数有:",len(os.Args))

	//遍历os.args切片,就可以得到所有的命令行输入参数值
	for i,v := range os.Args {
		fmt.Printf("args[%v]=%v\n",i,v)
	}

}

flag包解析命令行参数

点击查看代码
package main

import (
	"flag"
	"fmt"
)

func main() {

	// 定义几个变量,用于接收命令行参数值
	var user  string
	var pwd string
	var host string
	var port int

	// &user 就是接收用户命令行中输入的 -u 后面的参数值
	// "u" 	就是 -u 指定参数
	// "" 	默认值
	// ""	说明
	flag.StringVar(&user,"u","root","用户名默认为root")
	flag.StringVar(&pwd,"p","","密码默认为空")
	flag.StringVar(&host,"h","127.0.0.1","主机名默认为本机")
	flag.IntVar(&port,"P",3306,"端口默认为3306")

	// 调用该方法
	flag.Parse()
	fmt.Printf("user = %v \npwd = %v \nhost = %v \nport = %v",
		user,pwd,host,port)
}

posted @ 2023-04-10 10:15  六月OvO  阅读(12)  评论(0编辑  收藏  举报