1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| package main
import ( "fmt" "io" "os" )
func main() { args := os.Args //获取用户输入的所有参数
//如果用户没有输入,或参数个数不够,则调用该函数提示用户 if args == nil || len(args) != 3 { fmt.Println("useage : xxx srcFile dstFile") return }
srcPath := args[1] //获取输入的第一个参数 dstPath := args[2] //获取输入的第二个参数 fmt.Printf("srcPath = %s, dstPath = %s\n", srcPath, dstPath)
if srcPath == dstPath { fmt.Println("源文件和目的文件名字不能相同") return }
srcFile, err1 := os.Open(srcPath) //打开源文件 if err1 != nil { fmt.Println(err1) return }
dstFile, err2 := os.Create(dstPath) //创建目的文件 if err2 != nil { fmt.Println(err2) return }
buf := make([]byte, 1024) //切片缓冲区 for { //从源文件读取内容,n为读取文件内容的长度 n, err := srcFile.Read(buf) if err != nil && err != io.EOF { fmt.Println(err) break }
if n == 0 { fmt.Println("文件处理完毕") break }
//切片截取 tmp := buf[:n] //把读取的内容写入到目的文件 dstFile.Write(tmp) }
//关闭文件 srcFile.Close() dstFile.Close() }
|