/** * File Created at 2015年8月4日 * * Copyright 2015 star.com Limited. * All rights reserved. */ package com.star.daffodil.common.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.StandardCopyOption; 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; /** * <p> * FTP上传下载工具类 * </p> * @author qunxing.du * */ public class FTPUtil { private static String HOSTNAME = "127.0.0.1"; private static int PORT = 21; private static String USERNAME = "admin"; private static String PASSWORD = "admin"; private static FTPClient ftp; private FTPUtil(){} private static FTPUtil ftpUtil; public static FTPUtil getInstance(){ if(ftp == null){ ftp = new FTPClient(); } if(ftpUtil == null){ ftpUtil = new FTPUtil(); } return ftpUtil; } /** * 连接ftp服务器 */ private void connect(){ FTPClientConfig ftpClientConfig = new FTPClientConfig(FTPClientConfig.SYST_NT); ftp.configure(ftpClientConfig); try { ftp.connect(HOSTNAME, PORT); ftp.login(USERNAME, PASSWORD); } catch (IOException e) { e.printStackTrace(); } } /** * 退出关闭连接 */ private void close(){ if(ftp.isConnected()){ try { ftp.logout(); } catch (IOException e) { e.printStackTrace(); } finally{ try { ftp.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } public boolean upload(String dest, InputStream is){ boolean flag = false; connect(); int reply = ftp.getReplyCode(); if(!FTPReply.isPositiveCompletion(reply)){ close(); return flag; } try { String destFile = dest.replace("\\\\", "/"); String destDir = destFile.substring(0, destFile.lastIndexOf("/")); FTPFile[] ftpFiles = ftp.listDirectories("\\"); boolean isExist = false; for (FTPFile ftpFile : ftpFiles) { if(destDir.equals(ftpFile.toString())){ isExist = true; break; } } if(!isExist){ ftp.makeDirectory(destDir); } ftp.setFileType(FTP.BINARY_FILE_TYPE); flag = ftp.storeFile(dest, is); if(flag){ System.out.println("上传成功"); }else{ System.out.println("上传失败"); } } catch (IOException e) { e.printStackTrace(); }finally{ if(is != null ){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } close(); } return flag; } public InputStream download(String file){ InputStream is = null; connect(); int reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { close(); return null; } try { is = ftp.retrieveFileStream(file); if(ftp.completePendingCommand()){ System.out.println("下载流读取完成"); } } catch (IOException e) { e.printStackTrace(); } finally { close(); } return is; } public static void main(String[] args) { InputStream is = getInstance().download("/upload11/d21/gif/1439029019947.gif"); FileOutputStream fos = null; File file = new File("D:/a2.gif"); try { Files.copy(is, file.toPath(), StandardCopyOption.REPLACE_EXISTING); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(fos != null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if(is != null){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } InputStream uis = null; try { uis = new FileInputStream("D:/a2.gif"); getInstance().upload("upload11/d21/gif/" + GlobalUtil.getUniqueNumber() + ".gif", uis); } catch (FileNotFoundException e) { e.printStackTrace(); } finally{ if(uis != null){ try { uis.close(); } catch (IOException e) { e.printStackTrace(); } } } } } }
相关推荐
在这个特定的案例中,我们关注的是`commons-net-ftp-2.0.jar.zip`这个压缩包,它包含了Apache Commons Net FTP库的2.0版本。这个库对于Java开发者来说,是进行FTP文件传输的重要工具。 FTP是一种用于在互联网上传输...
implementation 'org.apache.commons:commons-net:3.6' // 使用最新版本替代3.3 } ``` 然后,我们需要创建一个FTP客户端实例并配置连接参数,如服务器地址、端口号、用户名和密码。以下是一个简单的FTP连接示例: ...
使用apache commons-net包实现文件ftp上传
在这个版本中,我们聚焦于`commons-net-3.6.jar`,它提供了丰富的API和工具,使开发者能够方便地进行FTP文件的上传、下载以及读写操作。这个库不仅简化了FTP操作,还为开发者提供了深入理解其内部工作原理的机会,...
库提供了FTPClient、FTPSSLClient、FTPSSLSocketFactory等类,可以实现FTP的连接、登录、文件上传、下载、删除、重命名等操作,并且支持主动和被动模式,以及SSL/TLS加密。 3. **Telnet功能** Telnet协议在commons...
Apache的FTP库是Java开发中一个非常实用的工具,它主要包含了两个核心的JAR包:`commons-net-1.4.1.jar`和`jakarta-oro-2.0.8.jar`。这两个包提供了丰富的功能,允许开发者在Java应用中实现FTP(文件传输协议)的...
apache-jakarta旗下的所有开源...apache-jakarta-commons-net-ftp.jar apache-jakarta-oro.jar apache-jakarta-oro-2.0.8.jar commons-io-2.1-bin commons-logging-1.1.1-bin commons-modeler-2.0.1 commons-net-1.4.1
版本3.5是这个库的一个稳定发行版,提供了丰富的功能和优化,使得开发者可以轻松地在Java应用程序中实现在FTP服务器上进行文件的上传、下载以及其他操作。 Apache Commons Net库包括了以下关键知识点: 1. **FTP...
Apache Commons Net提供了丰富的类和方法,使得开发者可以方便地执行FTP任务,如上传、下载文件,创建、删除目录,以及管理文件权限等。 **FTPClient类** 是这个库中的核心,它实现了FTP协议的大部分功能。首先,你...
3. **commons-net-examples-3.6.jar**:包含了一些示例代码,演示了如何使用Apache Commons Net库的各种功能。这些例子是学习和快速上手的良好起点,可以帮助开发者快速理解和应用库中的函数。 此外,压缩包中还有...
在`commons-net-3.6.jar`这个版本中,我们主要关注FTP功能,因为这是该库最广泛使用的部分。 FTP支持是Apache Commons Net的核心功能之一。它提供了全面的FTP客户端实现,包括连接管理、文件上传、下载、列表操作、...
在`commons-net-3.3.jar`中,FTPClient类是核心,它实现了完整的FTP协议。开发者可以通过创建FTPClient实例,然后连接到FTP服务器,进行登录、设置传输模式(ASCII或BINARY)、改变工作目录、上传和下载文件等一系列...
总结起来,通过使用Apache Commons Net.jar,我们可以轻松地创建一个FTP工具类,实现FTP连接、文件上传和下载等操作。这个库不仅简化了网络编程的复杂性,还提供了稳定和高效的FTP客户端实现。在实际项目中,这样的...
这个库,如"commons-net-ftp-2.0.rar"所示,包含了一系列的JAR文件,使得开发者能够轻松地构建FTP客户端应用。 FTP(File Transfer Protocol)是一种用于在Internet上可靠地传输文件的协议。Apache Commons Net库为...
在Android应用开发中,有时我们需要实现将文件上传到FTP(File Transfer Protocol)服务器的功能。Apache Commons Net库是一个非常实用的工具,它提供了多种网络协议的支持,包括FTP。在这个压缩包"commons-...
Apache Commons Net 1.4.1提供了一个全面的Java实现,支持FTP的各种操作,包括上传、下载、列出目录、创建和删除文件等。这个库不仅简化了FTP交互,还处理了许多底层的网络细节,如连接管理和错误处理,使得开发者...
在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...
jar包,亲测可用
- Commons Net提供了完善的FTP客户端实现,可以进行文件的上传、下载、删除等操作,支持FTP、FTPS(FTP over SSL/TLS)和SFTP(SSH File Transfer Protocol)。 - 在不同版本中,FTP客户端的性能和稳定性得到了...
标题中的“利用commons-net包实现ftp上传下载例子”是指通过Apache Commons Net库来实现FTP(File Transfer Protocol)的上传和下载功能。Apache Commons Net是Apache软件基金会开发的一个Java库,它提供了多种网络...