public classFtpClientUtil {privateString host;private intport;privateString username;privateString password;private int bufferSize = 10 * 1024 * 1024;private int soTimeout = 15000;privateFTPClient ftp;publicFTPClient getFtp() {returnftp;
}public voidsetFtp(FTPClient ftp) {this.ftp =ftp;
}privateUploadStatus uploadStatus;publicUploadStatus getUploadStatus() {returnuploadStatus;
}public voidsetUploadStatus(UploadStatus uploadStatus) {this.uploadStatus =uploadStatus;
}public static classBuilder {privateString host;private int port = 21;privateString username;privateString password;private int bufferSize = 1024 * 1024;privateFTPClientConfig config;private int defaultTimeout = 15000;private int connectTimeout = 15000;private int dataTimeout = 15000;private int controlKeepAliveTimeout = 300;private int soTimeout = 15000;publicBuilder() {
}publicBuilder host(String host) {this.host =host;return this;
}public Builder port(intport) {this.port =port;return this;
}publicBuilder username(String username) {this.username =username;return this;
}publicBuilder password(String password) {this.password =password;return this;
}public Builder bufferSize(intbufferSize) {this.bufferSize =bufferSize;return this;
}publicBuilder config(FTPClientConfig config) {this.config =config;return this;
}public Builder defaultTimeout(intdefaultTimeout) {this.defaultTimeout =defaultTimeout;return this;
}public Builder connectTimeout(intconnectTimeout) {this.connectTimeout =connectTimeout;return this;
}public Builder dataTimeout(intdataTimeout) {this.dataTimeout =dataTimeout;return this;
}public Builder soTimeout(intsoTimeout) {this.soTimeout =soTimeout;return this;
}public Builder controlKeepAliveTimeout(intcontrolKeepAliveTimeout) {this.controlKeepAliveTimeout =controlKeepAliveTimeout;return this;
}public FtpClientUtil build() throwsIOException {
FtpClientUtil instance= new FtpClientUtil(this.host, this.port, this.username, this.password,this.bufferSize, this.config, this.defaultTimeout, this.d