标签:文件 用户 UNC pre xxx highlight strong ring info
文件的拷贝
package main import ( "os" "fmt" "io" ) func main(){ args := os.Args if len(args) != 3{ fmt.Println("必须是 xxx srcFile dstFile") return } srcFileName := args[1] dstFileName := args[2] srcFile,err1 := os.Open(srcFileName) dstFile,err2 := os.Create(dstFileName) if err1 !=nil{ fmt.Println("err1=",err1) return } if err2 !=nil{ fmt.Println("err2=",err2) } defer srcFile.Close() defer dstFile.Close() buf := make([]byte, 4*1024) for { n,err3:=srcFile.Read(buf) if err3!=nil{ if err3==io.EOF{ break } fmt.Println("err3=",err3) } dstFile.Write(buf[:n]) } }
tcp传输文件
//发送方 package main import ( "fmt" "os" "net" "io" ) func sendFile(path string,conn net.Conn){ //以只读方法打开文件 f,_:=os.Open(path) defer f.Close() buf := make([]byte,1024*4) for { n,err:=f.Read(buf) if err!=nil{ if err==io.EOF{ fmt.Println("文件发送完毕") return } fmt.Println("出错了") return } conn.Write(buf[:n]) } } func main() { //提示用户输入文件路径并获取 fmt.Println("请输入要传输的文件:") var path string fmt.Scan(&path) //获取文件的名字 fileInfo,err := os.Stat(path) if err!=nil{ fmt.Println("err1=",err) return } fileName := fileInfo.Name() //主动连接服务器 conn,_:=net.Dial("tcp","localhost:8080") defer conn.Close() //给接收方先发送文件名 conn.Write([]byte(fileName)) //接收对方的回复,如果为ok,说明对方准备好,可以发文件 buf := make([]byte,1024) n,_:=conn.Read(buf) if string(buf[:n]) == "ok"{ //发送内容 sendFile(path,conn) } } //接收方 package main import ( "net" "fmt" "os" "io" ) func recvFile(fileName string,conn net.Conn){ f,_:=os.Create("mmp"+fileName) defer f.Close() for { buf:=make([]byte,1024) n,err :=conn.Read(buf) if err!=nil{ if err ==io.EOF{ fmt.Println("文件接收完毕") return } } f.Write(buf[:n]) } } func main(){ listener,_:=net.Listen("tcp","localhost:8080") defer listener.Close() //阻塞等待用户连接 conn,_:=listener.Accept() buf:=make([]byte,1024) //先读取对方发来的文件名 n,err:=conn.Read(buf) if err!=nil{ fmt.Println("err=",err) return } fileName := string(buf[:n]) conn.Write([]byte("ok")) recvFile(fileName,conn) }
标签:文件 用户 UNC pre xxx highlight strong ring info
原文地址:https://www.cnblogs.com/traditional/p/9277795.html