业务需求:循环遍历FTP文件夹获取文件后,并发下载FTP服务器的文件到本地,删除远程文件,然后继续下一轮扫描,客户端有读写权限。
代码如下:
package FTP
import (
"errors"
"fmt"
"github.com/jlaffaye/ftp"
"runtime"
"sync"
"time"
)
const (
Data_Size = 1024
)
// FTP 文件对象
type FileSource struct {
entry *ftp.Entry // ftp库的entry对象
path string // 文件的全路径+文件名
}
// EntryHandler 遍历ftp目录时的文件handler
type EntryHandler func(e *ftp.Entry, currentPath string) error
// FTP文件信息
type FtpFile struct {
FileName string //FTP文件名
Path string //FTP文件的全路径+文件名
Type int //FTP文件类型,文件:0, 文件夹:1
Size int //FTP文件大小
}
type Deal struct {
ftp *ftp.ServerConn
fileChan chan interface{}
wg sync.WaitGroup
}
func NewDeal() *Deal {
return &Deal{}
}
func (this *Deal) Init(addr, user, passwd string) error {
var err erro