xinghe0 发表于 2015-11-6 10:04:59

java实现的FTP上传下载客户端

  org.apache.commons.net.ftp.*中的FTPClient类实现的FTP上传下载功能:
  需导入Apache的commos-net的jar包,若导入的是1.4版本的包,则FTPFile[] fileList = ftpClient.listFiles()的执行过程中可能会报错,此时更换导入2.0版本的jar包,问题即可解决。
  代码如下:
  package com.java.ftp;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import org.apache.commons.net.ftp.*;public class FtpUtil {private FTPClient ftpClient = new FTPClient();/*** 连接到FTP服务器* * @param host*            FTP地址* @param port*            端口号* @param username*            用户名* @param password*            密码*/public boolean ftpConnect(String host, int port, String username,String password) {try {ftpClient.connect(host, port);ftpClient.setControlEncoding("GBK");int reply = ftpClient.getReplyCode();if (FTPReply.isPositiveCompletion(reply)) {if (ftpClient.login(username, password)) {System.out.println("Successful login!");return true;} else {System.out.println("fail to login!");}}} catch (Exception e) {System.out.println("Failure connection!");e.printStackTrace();}return false;}//从本地上传单个文件,localName:本地文件路径包含文件名,ftpFile:所要放于ftp的文件夹,newName:重命名public void ftpUpload(String localName, String ftpFile, String newName) {File srcFile = new File(localName);FileInputStream fis = null;try {fis = new FileInputStream(srcFile);//改变工作目录到所需要的路径下ftpClient.changeWorkingDirectory(ftpFile);ftpClient.setBufferSize(1024);ftpClient.setControlEncoding("GBK");ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.storeFile(newName, fis);} catch (Exception e) {System.out.println("Failed to upload!");e.printStackTrace();} finally {try {fis.close();ftpDisConnect();} catch (IOException e) {e.printStackTrace();}}}//从本地上传一个文件夹,localPath:本地文件夹,ftpPath:上传的资源所要存放的文件夹public void ftpUpload2(String localPath, String ftpPath) {File uploadFile = new File(localPath);File[] fileList = uploadFile.listFiles();FileInputStream fis = null;if (fileList == null) {return;}for (int i = 0; i < fileList.length; i++) {try {fis = new FileInputStream(fileList);String ftpFileName = fileList.getName();ftpClient.changeWorkingDirectory(ftpPath);ftpClient.setBufferSize(1024);ftpClient.setControlEncoding("GBK");ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.storeFile(ftpFileName, fis);} catch (Exception e) {e.printStackTrace();}}try {fis.close();} catch (IOException e) {e.printStackTrace();}ftpDisConnect();}//从FTP下载单个文件public void ftpDownload(String ftpFile, String localName) {File outfile = new File(localName + "/" + ftpFile);OutputStream fos = null;try {fos = new FileOutputStream(outfile);ftpClient.setBufferSize(1024);ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.retrieveFile(ftpFile, fos);} catch (Exception e) {System.out.println("Failed to upload!");e.printStackTrace();} finally {try {fos.close();ftpClient.disconnect();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}ftpDisConnect();}}//从FTP下载一个文件夹public void ftpDownload2(String ftpPath, String localPath) {OutputStream fos = null;File localFile = null;try {ftpClient.changeWorkingDirectory(ftpPath);FTPFile[] fileList = ftpClient.listFiles();for (int i = 0; i < fileList.length; i++) {String localname = fileList.getName();localFile = new File(localPath + "/" + localname);fos = new FileOutputStream(localFile);ftpClient.setBufferSize(1024);ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);}} catch (Exception e) {e.printStackTrace();}try {fos.close();} catch (IOException e) {e.printStackTrace();}ftpDisConnect();}public void ftpDisConnect() {try {if (ftpClient.isConnected()) {ftpClient.disconnect();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//测试public static void main(String[] args) {FtpUtil ftp = new FtpUtil();ftp.ftpConnect("172.20.65.30", 21, "z", "zzz");//下载单个文件ftp.ftpUpload("D://1.jpg", "/s", "6.jpg");//下载文件夹ftp.ftpUpload2("D://桌面", "/s");//上传单个文件ftp.ftpDownload("/s/2.jpg", "e:/");//上传文件夹ftp.ftpDownload2("/s","e://s");}}
             版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: java实现的FTP上传下载客户端