在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。
首先说一下ftp的特点是:传输速度快,适用于上传大文件,适用于局域网络。
ftp上传需要ftp服务器。这里描述客户端的实现。
上传:
/** * Description: 向FTP服务器上传文件 * @Version1.0 baomengjie * @param url FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param path FTP服务器保存目录 * @param filename 上传到FTP服务器上的文件名 * @param input 输入流 * @return 成功返回true,否则返回false */ public static boolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input) { boolean success = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(url, port);//连接FTP服务器 //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 ftp.login(username, password);//登录 reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return success; } ftp.changeWorkingDirectory(path); //设置文件类型(二进制) ftp.setFileType(FTPClient.BINARY_FILE_TYPE); ftp.storeFile(filename, input); input.close(); ftp.logout(); success = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } return success; }
下载:
@RequestMapping(value = "/downloadConfigFile") public void downloadConfigFile(HttpServletResponse response,@RequestParam("fileName")String fileName) { response.setCharacterEncoding("UTF-8"); response.setContentType("multipart/form-data"); FTPClient ftpClient = new FTPClient(); try { int reply; ftpClient.connect("120.120.120.156",21); ftpClient.login("user1", "user1"); reply = ftpClient.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftpClient.disconnect(); return; } ftpClient.changeWorkingDirectory("/GOS_CAS/BACKUP/cas_config_backup");//转移到FTP服务器目录 FTPFile[] fs = ftpClient.listFiles(); for(int i=0;i<fs.length;i++){ if(fs[i].getName().equals(fileName)){ String saveAsFileName = new String(fs[i].getName().getBytes("UTF-8"), "ISO8859-1"); response.setHeader("Content-Disposition", "attachment;fileName="+saveAsFileName); OutputStream os = response.getOutputStream(); ftpClient.retrieveFile(fs[i].getName(), os); os.flush(); os.close(); break; } } ftpClient.logout(); } catch (IOException e) { e.printStackTrace(); } finally { if (ftpClient.isConnected()) { try { ftpClient.disconnect(); } catch (IOException ioe) { } } } }
相关推荐
用JAVA实现Ftp文件上传下载,提供实现方法和测试用例
Java实现FTP文件上传和下载
这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...
java实现的ftp文件上传
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...
一款由java实现ftp自动上传整个磁盘所有文件,包括目录,下面的JTextArea读取Log4j及命令行的信息,采用第三方ftpClient.不过下载的部分还没有时间去做.
JAVA实现FTP协议文件上传
用Java实现FTP批量大文件上传下载(一) 本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量、大文件的上传下载控件。文章在比较了一系列FTP客户库的基础上...
用Java实现FTP批量大文件上传下载.doc 用Java实现FTP批量大文件上传下载.doc 用Java实现FTP批量大文件上传下载.doc
Java FTP 实现跨服务器文件上传下载
Java实现FTP批量大文件上传下载.pdf
java 连接 FTP 文件操作(上传,下载,删除,复制
java实现ftp上传和下载文件功能 文档里有详细的代码
使用Java写的完整的上传下载Ftp上的文件案例。 请大家参考。 作者:宋海康
PutButton部分为向FTP服务器上传一个文件。 别忘了在程序中还要引入两个库文件(import sun.net.*,import sun.net.ftp.*)。 以下是这三部分的JAVA源程序: (1)显示FTP服务器上的文件 void ftpList_actionPerformed...
java FTP服务器文件上传下载,查找文件目录,不存在则添加,创建多级文件夹,java ,demo 直接使用,内有jar包
可能需要定时的自动去检测服务器是否存在所需要的文件,如果有就自动通过ftp下载,以上为java实现代码