`
zhangfeilo
  • 浏览: 399731 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

Java 利用FTP上传,下载文件,遍历文件目录

    博客分类:
  • java
 
阅读更多

Java实现FTP上传下载文件的工具包有很多,这里我采用Java自带的API,实现FTP上传下载文件。另外JDK1.7以前的版本与其之后版本的API有了较大的改变了。

例如:

JDK1.7之前 JDK1.7
ftpClient = new FtpClinet() ftpClient = FtpClient.create(ip)
ftpclient.login(user,password) ftpclient.login(user,null,password)
ftpclient.binary() ftpClient.setBinaryType();

一. 连接FTP服务器

   1: public class FTPUtil {
   2:     //FTP服务器IP地址
   3:     public final static String FTP_HOST = "10.103.240.255";
   4:     
   5:     //FTP服务器端口
   6:     public final static int FTP_PORT = 21;
   7:     
   8:     //FTP服务器用户名
   9:     public final static String FTP_USER = "bloodHunter";
  10:     
  11:     //密码
  12:     public final static String FTP_PASSWORD = "wbljy";
  13:     
  14:     
  15:     public static FtpClient getConnect()
  16:     {
  17:         try {
  18:             FtpClient ftpClient = FtpClient.create(FTP_HOST);
  19:             ftpClient.login(FTP_USER, FTP_PASSWORD.toCharArray());
  20:             return ftpClient;
  21:         } catch (FtpProtocolException e) {
  22:             // TODO Auto-generated catch block
  23:             e.printStackTrace();
  24:             System.out.println("Connect to FTP Server fail!");
  25:             return null;
  26:         } catch (IOException e) {
  27:             // TODO Auto-generated catch block
  28:             e.printStackTrace();
  29:             System.out.println("Connect to FTP Server fail!");
  30:             return null;
  31:         }
  32:         
  33:     }
  34: }

二. 上传文件

   1: /*
   2:      * ftp file upload
   3:      * @param path 上传文件的路径
   4:      * @param fileName 上传文件名称
   5:      * @return 上传成功返回true,否则返回false
   6:      * */
   7:     
   8:     public static boolean FtpUpload(String path,String fileName)
   9:     {
  10:         TelnetOutputStream os = null;
  11:         FileInputStream is = null;
  12:         FtpClient ftpClient = getConnect();
  13:         try {
  14:             ftpClient.setBinaryType();
  15:             os = (TelnetOutputStream) ftpClient.putFileStream(fileName, true);
  16:             is = new FileInputStream(new File(path));
  17:             byte[] buffer = new byte[1024];
  18:             int c;
  19:             while((c = is.read(buffer)) != -1)
  20:             {
  21:                 os.write(buffer,0,c);
  22:             }
  23:             System.out.println("Upload Success!");
  24:             return true;
  25:         } catch (Exception e) {
  26:             // TODO: handle exception
  27:             e.printStackTrace();
  28:             System.out.println("Upload fail!");
  29:             return false;
  30:         }finally{
  31:             try {
  32:                 ftpClient.close();
  33:                 is.close();
  34:                 os.close();
  35:             } catch (IOException e) {
  36:                 // TODO Auto-generated catch block
  37:                 e.printStackTrace();
  38:             }
  39:         }
  40:     }

三. 下载文件

   1: /*
   2:      * ftp file download
   3:      * @param path 下载文件的保存路径
   4:      * @param fileName 下载文件名称
   5:      * @return 下载成功返回true,否则返回false
   6:      * */
   7:     public static boolean FtpDownload(String path,String fileName)
   8:     {
   9:         FileInputStream is = null;
  10:         FileOutputStream os = null;
  11:         FtpClient ftpClient = getConnect();
  12:         try {
  13:             is =  (FileInputStream) ftpClient.getFileStream(fileName);
  14:             os = new FileOutputStream(new File(path));
  15:             byte[] buffer = new byte[1024];
  16:             int c;
  17:             while((c = is.read(buffer)) != -1)
  18:             {
  19:                 os.write(buffer,0,c);
  20:             }
  21:             System.out.println("Download Success!");
  22:             return true;
  23:         } catch (FtpProtocolException e) {
  24:             // TODO Auto-generated catch block
  25:             e.printStackTrace();
  26:             System.out.println("Download fail!");
  27:             return false;
  28:         } catch (IOException e) {
  29:             // TODO Auto-generated catch block
  30:             e.printStackTrace();
  31:             System.out.println("Download fail");
  32:             return false;
  33:         }catch (Exception e) {
  34:             // TODO: handle exception
  35:             e.printStackTrace();
  36:             return false;
  37:         }
  38:         finally{
  39:             try {
  40:                 is.close();
  41:                 os.close();
  42:                 ftpClient.close();
  43:             } catch (IOException e) {
  44:                 // TODO Auto-generated catch block
  45:                 e.printStackTrace();
  46:             }
  47:         }
  48:     }

四. 遍历FTP目录文件

   1: /*
   2:      * FTP getFileList
   3:      * @param filenames       保存遍历的文件名
   4:      * @param path    遍历目录的路径
   5:      * */
   6:     public static void getFtpFileList(List<String> filenames,String path){
   7:         //DataInputStream ds = null;
   8:         BufferedReader ds = null;
   9:         FtpClient ftpClient = getConnect();
  10:         try {
  11:             ds = new BufferedReader(new InputStreamReader(ftpClient.nameList(path),"ISO-8859-1"));
  12:             String line = "";
  13:             while((line = ds.readLine())!=null){
  14:                 line = new String(line.getBytes("ISO-8859-1"),"GBK");
  15:                 String name[] = line.split("/");
  16:                 filenames.add(name[name.length - 1]);
  17:             }
  18:         } catch (FtpProtocolException e) {
  19:             // TODO Auto-generated catch block
  20:             e.printStackTrace();
  21:         } catch (IOException e) {
  22:             // TODO Auto-generated catch block
  23:             e.printStackTrace();
  24:         }finally{
  25:             try {
  26:                 ds.close();
  27:                 ftpClient.close();
  28:             } catch (IOException e) {
  29:                 // TODO Auto-generated catch block
  30:                 e.printStackTrace();
  31:             }
  32:         }
  33:     }
分享到:
评论

相关推荐

    java ftp上传 下载 文件压缩解压

    这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...

    java 从ftp服务器下载文件

    * Description: FTP文件下载功能 * @Version 1.0 Jul 27, 2008 5:32:36 PM by cuihongbao@d-heaven.com * @param url FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP用户名 * @param ...

    java实现ftp自动上传文件

    总的来说,这个项目提供了一个Java FTP客户端的实现,能够自动上传磁盘上的文件和目录,同时通过`JTextArea`和Log4j进行日志展示,但目前缺少文件下载的功能。开发者可以基于这个基础进一步扩展和完善。

    用Java实现FTP批量大文件上传下载

    本文将详细介绍如何利用Java中的FTP客户端库来实现高效的文件上传和下载。 #### 二、Java FTP客户端库的选择 选择合适的Java FTP客户端库是实现高效文件传输的第一步。在众多的库中,J-ftp因其通用性和功能性成为...

    JAVA实现ftp上传,下载

    在Java中实现FTP上传和下载,我们可以利用Apache Commons Net库,它提供了一系列的FTP客户端API,方便我们进行文件操作。以下是对这个主题的详细讲解: 一、Apache Commons Net库介绍 Apache Commons Net是Apache...

    用Java实现FTP批量大文件上传下载.zip

    通过以上步骤,我们可以利用Java的FTPClient类实现FTP批量大文件的上传和下载。对于数据量大的情况,这种自动化和批量化的处理方式大大提高了工作效率和系统稳定性。记住,实际开发中还需要根据具体需求进行调整和...

    java定时从ftp服务器更新相关文件

    要实现定时从FTP服务器下载文件,可以利用Java的定时框架,如`java.util.Timer`或`java.concurrent.ScheduledExecutorService`。设置定时任务,周期性检查FTP服务器是否有新文件。 下面是一个使用`ftp4j`实现的...

    ftp上传下载java代码

    1. 递归上传/下载目录:可以遍历本地目录,逐个上传或下载文件。 2. 断点续传:如果文件较大,可以记录已传输的部分,在下次连接时继续上传或下载。 3. 多线程上传/下载:通过多线程同时处理多个文件,提高传输效率...

    ftp上传下载文件及文件夹

    JDK 自带的 `java.net` 包中的 `FTPURLConnection` 类可以用来进行FTP文件下载。以下是一个简单的示例: ```java import java.io.FileOutputStream; import java.io.InputStream; import java.net.FTPURLConnection...

    FTP文件管理管理模块 java实现

    4. 多线程文件上传和下载:在处理大量文件时,为了提高效率,通常会使用多线程来并发执行上传和下载任务。Java的`java.util.concurrent`包提供了丰富的并发工具,如`ExecutorService`和`Future`,可以用来创建和管理...

    JAVA-配置生成XML文件和FTP上传程序

    本项目名为"JAVA-配置生成XML文件和FTP上传程序",其主要目标是利用JAVA来实现XML文件的动态生成以及通过FTP(File Transfer Protocol)进行文件传输。这个程序具有高度的可配置性,使得对同类型的XML文件生成和FTP...

    java Swing 文件批量上传 DEMO 源代码

    在这个"java Swing 文件批量上传 DEMO 源代码"中,我们关注的核心是利用Swing构建一个用户界面,实现文件和文件夹的批量上传功能。这涉及到多个Java Swing组件、事件处理以及文件I/O操作。 首先,Swing 提供了诸如...

    用Java实现文件的上传和下载

    在Java编程中,文件的上传和下载是常见的功能,尤其在网络应用中,如Web服务器、FTP服务器等场景。本文将详细讲解如何使用Java实现文件的上传和下载,并且支持多个文件上传,同时可以配置文件大小限制和允许的文件...

    FTP.rar_ftp_java ftp

    在Java编程环境中,我们可以利用Java的FTP库来实现FTP连接、下载和上传功能。本篇将详细介绍如何使用Java进行FTP操作。 首先,Java中的`java.net`包提供了一个基本的FTP客户端接口,但功能相对有限。通常,开发者会...

    Android ftp文件分割上传,并且实现合并

    为了实现合并,可以在服务器端使用Shell脚本或者编程语言(如Python、Java)编写一个程序,遍历指定目录下的所有小文件,按照正确的顺序读取内容并写入目标大文件。 总的来说,这个Demo展示了如何在Android设备上...

    Server_Ftp.rar_FTP SERVER_java socket _java socket ftp_服务器_进程通信

    5. **FTP命令处理**:FTP服务器需要理解并响应一系列预定义的FTP命令,如`USER`(用户名)、`PASS`(密码)、`CWD`(改变工作目录)、`LIST`(列出目录内容)、`STOR`(上传文件)和`RETR`(下载文件)等。...

    java上传下载例子 有完整代码和jar包

    文件下载通常涉及生成一个HTTP响应,其中包含文件内容和适当的MIME类型。Servlet可以通过创建`ServletOutputStream`,然后写入文件内容到输出流来实现这一点。 然而,Java标准库并未提供直接处理上传下载的高级API...

Global site tag (gtag.js) - Google Analytics