package com.genomics.ib.item.control;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
/**
* @author
* package com.genomics.ib.item.control
* @title ItemFtp
* @Description : FTP 上传下载工具类
* @time 2013-11-27
*/
public class ItemFtp {
private FTPClient ftp;
/**
*
* @param path 上传到ftp服务器哪个路径下
* @param addr 地址
* @param port 端口号
* @param username 用户名
* @param password 密码
* @return
* @throws Exception
*/
private boolean connect(String path,String addr,int port,String username,String password) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
ftp.connect(addr,port);
ftp.login(username,password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(path);
result = true;
return result;
}
/**
* @author
* @class ItemFtp
* @title upload
* @Description :
* @time 2013 2013-11-27
* @return void
* @exception :(Error note)
* @param file 上传的文件或文件夹
* @param path 上传的文件的路径
* @throws Exception
*/
private void upload(File file , String path) throws Exception{
System.out.println( " file.isDirectory() : " + file.isDirectory() );
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 , path );
ftp.changeToParentDirectory();
}else{
File file2 = new File(file.getPath()+"\\"+files[i]);
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
}
}else{
File file2 = new File(file.getPath());
System.out.println( " file.getPath() : " + file.getPath() + " | file2.getName() : " + file2.getName() );
InputStream input = new FileInputStream(file2);
ftp.changeWorkingDirectory(path);
ftp.storeFile(file2.getName(), input);
input.close(); //关闭输入流
ftp.logout(); //退出连接
}
}
/**
* @author
* @class ItemFtp
* @title download
* @Description : FPT 下载文件方法
* @time 2013 2013-11-27
* @return void
* @exception :(Error note)
* @param reomvepath 下载的文件的路径
* @param fileName 下载的文件名
* @param localPath 下载的文件本地路径
* @throws Exception
*/
@SuppressWarnings("unused")
private void download(String reomvepath , String fileName , String localPath ) throws Exception{
ftp.changeWorkingDirectory(reomvepath);
// 列出该目录下所有文件
FTPFile[] fs = ftp.listFiles();
// 遍历所有文件,找到指定的文件
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
// 根据绝对路径初始化文件
File localFile = new File(localPath + "/" + ff.getName());
// 输出流
OutputStream is = new FileOutputStream(localFile);
// 下载文件
ftp.retrieveFile(ff.getName(), is);
System.out.println("下载成功!");
is.close();
}
}
ftp.logout(); //退出连接
}
public static void main(String[] args) throws Exception{
ItemFtp t = new ItemFtp();
boolean lianjie = t.connect("D:\\", "127.0.0.1", 21, "jiang", "jiang");
System.out.println( "连接 :" + lianjie );
//上传
// File file = new File("d:\\test.txt");
// t.upload(file , "E:\\ftptest\\mulu");
//下载
t.download("E:\\ftptest\\mulu", "test.txt", "D:\\db");
}
}
借助jar包 apache 的 commons-net-3.3.jar
基于 apache 的 commons-net-3.3.jar 的 ftp java代码上传下载文件
最新推荐文章于 2024-06-15 23:19:46 发布