main.go
package main import (
"strings"
ftp4go "github.com/shenshouer/ftp4go"
"fmt"
"flag"
"github.com/larspensjo/config"
"time"
) var (
configFile = flag.String("configfile", "config.ini", "General configuration file")
) //配置文件
var TOPIC = make(map[string]string)
var TOPIC1 = make(map[string]string)
//配置文件 func main() { /*读取配置*/
cfg, err1 := config.ReadDefault(*configFile)
if err1 != nil {
restart("读取配置文件失败")
}
if cfg.HasSection("server") {
section, err1 := cfg.SectionOptions("server")
if err1 == nil {
for _, v := range section {
options, err1 := cfg.String("server", v)
if err1 == nil {
TOPIC[v] = options
}
}
}
}
if cfg.HasSection("client") {
section, err1 := cfg.SectionOptions("client")
if err1 == nil {
for _, v := range section {
options, err1 := cfg.String("client", v)
if err1 == nil {
TOPIC1[v] = options
}
}
}
}
/*读取配置*/ /*连接ftp*/
ftpClient := ftp4go.NewFTP()
_, err := ftpClient.Connect(TOPIC["address"], ftp4go.DefaultFtpPort, "")
if err != nil {
restart("连接失败")
}
defer ftpClient.Quit()
_, err = ftpClient.Login(TOPIC["name"], TOPIC["password"], "")
if err != nil {
restart("登陆失败")
}
/*连接ftp*/ /*读取目录*/
var files []string
c1 := make(chan string)
go func(){
if files, err = ftpClient.Nlst(TOPIC["path"]); err != nil {
restart("读取目录失败")
}
c1 <- "读取目录成功"
}()
select {
case res := <-c1:
fmt.Println(res)
case <-time.After(time.Second * ):
restart("读取目录超时")
}
if len(files) == {
restart("无可下载文件")
}
/*读取目录*/ /*执行下载*/
for i := ; i < len(files); i++ {
ch := files[i]
str := strings.Replace(ch, " ", ",", -)
s := strings.Split(str,",")
x := len(s)-
file1 := s[x]
if err = ftpClient.DownloadResumeFile(TOPIC["path"]+"/"+file1, TOPIC1["path"]+file1, false); err == nil{
fmt.Println(TOPIC["path"]+"/"+file1+"--->下载成功")
_, err = ftpClient.Delete(TOPIC["path"]+"/"+file1)
if err == nil {
fmt.Println(TOPIC["path"]+"/"+file1+"--->删除成功")
}else{
restart("删除失败")
break
}
}else{
restart("下载失败")
break
}
}
/*执行下载*/
restart("新的一轮执行")
} func restart(err string){
fmt.Println("重启--------->"+err)
time.Sleep(time.Second * )
main()
}
config.ini
[server]
address = 192.168.1.58
name = test
password =
path = / [client]
path = D:/Ftp/