• 大小: 19KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: Java
  • 标签: java  ftp  

资源简介

编写了java如何使用ftp上传下载文件以及文件夹:其中下载文件使用了jdk的api和apache的api两种方式实现;下载文件,使用了jdk的api方式实现。 仅作参考,代码已测试。

资源截图

代码片段和文件信息

package ftpupload;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

/**
 * 使用apache api ftp上传、下载文件
 * 
 * @author Administrator
 * 
 */

public class MyApacheFtpUpload {

private static FTPClient ftpClient = new FTPClient();
    private static String encoding = System.getProperty(“file.encoding“);
    
// 获取服务器连接
private static boolean getConnection(String ip int port String userName
String password) {
try {
// 连接ftp服务器
ftpClient.connect(ip);

// 登录
ftpClient.login(userName password);

//为了下载中文名文件正常,客户端需如下设置,因为:
/**
 *  1.首先apache-FtpServer 默认使用的是utf-8  
 *    查看FtpServerProtocolCodecFactory源码可知 可知它的encode
 *    decode 都是使用的是utf-8.
 *  2.ftp命令走的是control connection 所以客户端要使用 ftpClient.setControlEncoding(“UTF-8“); 
 */
ftpClient.setControlEncoding(“utf-8“);

// 获取连接状态
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
throw new Exception(“连接服务器失败!“);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}

/**
 * 上传文件
 * 
 * @param remotePath
 *            远程文件名
 * @param localPath
 *            本地文件名
 */
private static void uploadFile(String remotePath String localPath) {
FileInputStream input;
try {
input = new FileInputStream(localPath);

//以二进制形式上传
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

//为了上传中文文件名成功,需new String(remotePath.getBytes(encoding)“iso-8859-1“)
boolean flag = ftpClient.storeFile(new String(remotePath.getBytes(encoding)“iso-8859-1“) input);
if (flag) {
System.out.println(“上传成功“);
} else {
System.out.println(“上传失败“);
}
input.close();
ftpClient.logout();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

/**
 * 下载FTP服务器文件
 * 
 * @param remoteFileName
 * @param localPath
 */
private static void downloadFile(String remoteFileName String localPath) {
      
try {
FTPFile[] files = ftpClient.listFiles();
for (FTPFile ftpFile : files) {
if (ftpFile.getName().equals(remoteFileName)) {
FileOutputStream out = new FileOutputStream(localPath
+ ftpFile.getName());
//为了下载中文文件名成功,需new String(ftpFile.getName().getBytes(encoding)“iso-8859-1“)
ftpClient.retrieveFile(new String(ftpFile.getName().getBytes(encoding) “ISO-8859-1“) out);
out.clo

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-03-11 10:16  ftp上传、下载文件及目录\
     目录           0  2014-03-10 10:48  ftp上传、下载文件及目录\FTP上传、下载文件\
     文件        4454  2014-03-07 17:59  ftp上传、下载文件及目录\FTP上传、下载文件\MyApacheFtpUpload.java
     文件        4447  2014-03-07 15:24  ftp上传、下载文件及目录\FTP上传、下载文件\MyFtpUpload.java
     文件        4398  2014-03-10 10:46  ftp上传、下载文件及目录\FTP上传、下载文件\ReviewFTP.java
     文件       47104  2014-03-07 14:31  ftp上传、下载文件及目录\ftp上传、下载实例.wps
     目录           0  2014-03-11 10:16  ftp上传、下载文件及目录\ftp上传、下载文件夹(jdk)\
     文件        8229  2014-03-11 10:02  ftp上传、下载文件及目录\ftp上传、下载文件夹(jdk)\JDKUploadFileFolder.java
     文件        7134  2014-03-10 14:41  ftp上传、下载文件及目录\ftp命令.wps

评论

共有 条评论