package com.jb.efile.service.impl;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPServiceImpl {
private FTPClient ftp;
private boolean connect(String path, String addr, int port,
String username, String password) throws Exception {
ftp = new FTPClient();
ftp.connect(addr, port);
ftp.login(username, password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.setControlEncoding("GBK");
if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
System.out.println("链接ftp失败");
ftp.disconnect();
return false;
}
createDirs(path);
ftp.changeWorkingDirectory(path);
return true;
}
public void createDirs(String path) throws IOException {
String[] dirs = path.split("/");
for (String dir : dirs) {
this.ftp.mkd(dir);
this.ftp.changeWorkingDirectory(dir);
}
}
/**
*
* @param file
* 上传的文件或文件夹
* @throws Exception
*/
private void upload(File file) throws Exception {
if (file.isDirectory()) {
ftp.makeDirectory(file.getName());
ftp.changeWorkingDirectory(file.getName());
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
File file1 = new File(file.getPath() + "\\" + files[i]);
if (file1.isDirectory()) {
upload(file1);
ftp.changeToParentDirectory();
} else {
FileInputStream input = new FileInputStream(file1);
ftp.storeFile(file1.getName(), input);
input.close();
}
}
} else {
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
}
public void disconnected() {
if ((null != ftp) && (ftp.isConnected())) {
try {
ftp.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ftp.disconnect();
} catch (Exception e2) {
throw new RuntimeException(e2.getMessage());
}
}
}
}
//下载
public static void main(String[] args) {
FTPServiceImpl t = new FTPServiceImpl();
System.out.println("传输文件开始");
try {
boolean conn = t.connect("new/old/1", "127.0.0.1", 21, "Uno", "zwp@lp");
if (conn) {
String path = "D:\\java\\jar\\Junit";
//"E:\\work\\22.218.3306备份"
File file = new File(path);
t.upload(file);
System.out.println("传输文件结束");
t.disconnected();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
java实现ftp文件上传
最新推荐文章于 2024-07-05 09:21:40 发布