(go) 上传文件elipse专用
来源:互联网 发布:linux查看网卡网关 编辑:程序博客网 时间:2024/05/16 13:43
package main
import (
"bufio"
"io"
"log"
"os"
"os/exec"
"strings"
"time"
)
const (
filename = "c:\\myetc\\remote.etc"
dotfilename = "c:\\myetc\\.filename"
)
func main() {
var servicefilepath string
var serviceIP string
var passwd string
var serviceusername string
var port string
var spath string
var sfilename string
var splitstrings []string
//打开之前应该判断文件是否存在
_, err := os.Stat(filename)
if err != nil {
log.Println("文件不存在!")
log.Println("设置的样例:c:\\myetc\\remote.etc")
log.Println("m_ta/m_ta@192.168.224.128:22:/home/m_ta/src")
return
}
f, err := os.Open(filename) //打开文件
//打开文件出错处理
defer func() {
f.Close()
}()
if nil == err {
buff := bufio.NewReader(f) //读入缓存
for {
line, err := buff.ReadString('\n') //以'\n'为结束符读入一行
if err != nil || io.EOF == err {
break
}
//如果是#开头的则认为是注释符
strings.Trim(line, " ")
if ok := strings.Contains(line, "#"); ok {
continue
}
//去回车换行符
//样例 m_ta/m_ta@192.168.224.128:22:/home/m_ta/src
splitstrings = strings.FieldsFunc(strings.Replace(line, "\r\n", "", -1), func(char rune) bool {
switch char {
case ':', '/', '@':
return true
}
return false
})
passwd, serviceusername, serviceIP, port = splitstrings[0], splitstrings[1], splitstrings[2], splitstrings[3]
}
f.Close()
f, err := os.Open(dotfilename) //打开文件
//打开文件出错处理
defer func() {
f.Close()
}()
if nil == err {
buff := bufio.NewReader(f) //读入缓存
line, err := buff.ReadString('\n') //以'\n'为结束符读入一行
if err != nil || io.EOF == err {
return
}
//DOS下文件名要用两个反斜杠
linetmp := strings.Replace(line, "\\", "\\\\", -1)
//去了换行符
linetmp = strings.Replace(line, "\n", "", -1)
//取文件名
line = strings.Replace(line, "\\", "/", -1)
tmpsplitstrings := strings.SplitN(line, "/", strings.Count(line, "/")+1)
sfilename = tmpsplitstrings[strings.Count(line, "/")]
//取路径 把文件名替换了
tmpsplitstrings = strings.Split(line, "src")
spath = strings.Replace(tmpsplitstrings[1], sfilename, "", -1)
servicefilepath = "/" + strings.Join(splitstrings[4:], "/") + spath
parameter := serviceusername + "@" + serviceIP + ":" + servicefilepath
log.Println(linetmp, "--->", parameter)
cmd := exec.Command("pscp.exe", "-P", port, "-pw", passwd, linetmp, parameter)
err = cmd.Run()
if err != nil {
log.Print(err)
} else {
log.Print("OK!")
}
}
time.Sleep(1 * time.Second)
}
}
- (go) 上传文件elipse专用
- (go) 上传文件ta3 专用(无多级目录)
- Go上传文件
- GO语言实现文件上传
- 图片上传专用博客
- Go实战--golang实现静态文件服务器(文件查看,文件上传,文件下载)
- Go图片上传
- Go实现图片上传
- git上传java项目代码(初次上传,以后可以用elipse插件上传)
- INI 文件读取专用类
- vim 安装vim-go 打造GOLANG 专用IDE
- linux mknod 命令- 建立块专用或字符专用文件
- 用ant编译的文件,elipse下无法调试解决
- elipse中新建tld标签库描述符文件
- elipse中清理项目后R文件消失了
- elipse中新建的xml在class文件中找不到
- Go实战--golang上传文件到七牛云对象存储(github.com/qiniu/api.v7)
- go语言使用sftp包上传文件和文件夹到远程服务器
- 转载_在Linux机器之间用NFS共享文件的方法及其错误解决.
- Symantec 和sep卸载密码方法
- C#线程系列讲座(1):BeginInvoke和EndInvoke方法
- 比较日期精确到日
- 用MFC库函数AfxBeginThread来操作线程
- (go) 上传文件elipse专用
- .NET下对文件进行加密解密
- 订单枚举实例
- 基于JAVA的界面开发:仿QQ
- ArcGIS提取面状道路中心线
- 【Linux】limits.conf 不重启就生效或者不生效的原因
- POJ_3013_Big Christmas Tree
- 13个mysql数据库的实用SQL小技巧
- X264参考手册