标签:文件 用户 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