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上传,下载文件,遍历文件目录的更多相关文章

  1. JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)

    package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...

  2. 2.6 利用FTP上传所有文件

    利用FTP上传所有文件 import os,ftptools class UploadAll(ftptools.FtpTools): #继承上一篇写的Ftptools '''upload an ent ...

  3. FTP上传下载文件(函数简易版)

    FTP上传下载文件(函数简易版) # 服务端 import socket import json import hashlib import struct import os user_dic = { ...

  4. java客户端调用ftp上传下载文件

    1:java客户端上传,下载文件. package com.li.utils; import java.io.File; import java.io.FileInputStream; import ...

  5. java web service 上传下载文件

    1.新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress package com; import java.io.FileInputStream; imp ...

  6. 【转】Java IOUtils方式上传下载文件 on HDFS

    [From]https://www.cnblogs.com/areyouready/p/9795442.html package com.css.hdfs04; import java.io.File ...

  7. Java实现FTP上传下载功能

    Java FTP客户端工具包很多,在此我选用的Apache的FTPClient.这个包的获取可以通过http://commons.apache.org/net/来获取,我使用的是最新的commons- ...

  8. shell ftp上传下载文件

    1. ftp自动登录批量下载文件. #####从ftp服务器上的/home/data 到 本地/home/databackup#### #!/bin/bash ftp -n<<! open ...

  9. 在linux命令行利用SecureCRT上传下载文件

    一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地?与ssh有关的 ...

随机推荐

  1. 666 专题五 AC自动机

    Problem A.Keywords Search d.n个关键字,1段描述,求描述中出现了多少关键字 s. c. /* ac自动机模板 n个关键字,1段描述,求描述中出现了多少关键字 */ #inc ...

  2. poj 2185 Milking Grid(next数组求最小循环节)

    题意:求最小的循环矩形 思路:分别求出行.列的最小循环节,乘积即可. #include<iostream> #include<stdio.h> #include<stri ...

  3. iOS沙盒(sandbox)机制及获取沙盒路径

    一. 每个iOS应用SDK都被限制在“沙盒”中,“沙盒”相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制. (1)应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒. ( ...

  4. JSON --- 一种轻量级的数据交换格式

    目录 1. 语法 2. 解析与序列化 JSON.stringify( jsData[, filter, indent] ) JSON.parse( jsonData[, reduction]) JSO ...

  5. springboot读写分离--temp

    我最初的想法是: 读方法走读库,写方法走写库(一般是主库),保证在Spring提交事务之前确定数据源. 保证在Spring提交事务之前确定数据源,这个简单,利用AOP写个切换数据源的切面,让他的优先级 ...

  6. LeNet-5结构分析及caffe实现————卷积部分

    占坑,记录 1.lenet-5的结构以及部分原理 2.caffe对于lenet-5的代码结构 图一 图一是整个LeNet-5的结构图,要点有:convolutions.subsampling.full ...

  7. UVaLive 6591 && Gym 100299L Bus (水题)

    题意:略. 析:不解释,水题. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include < ...

  8. HDU5110:Alexandra and COS(分块+容斥)

    传送门 题意 给出\(n*m\)的矩阵,'X'代表treasure.\(q\)个询问,每次询问(x,y)且频率为d的潜艇能探索到多少财富.探索范围要求abs(x1-x)>=abs(y1-y),也 ...

  9. HDOJ4857【拓扑排序】

    首先 CLJ ORZ 这道题做了两次,第一次瞎搞... 第二次,好吧,骄傲地说水过... 题意:不说了: 思路: 题目默认是小的在前面,那么就是反向建图,每次排序拿大的出来: 第一次做的时候,我记得我 ...

  10. noi,ac第五场部分题解 By cellur925

    题目质量还是不错的,只是我太菜了== 传送门 T1:序列计数(count) 题目描述 长度为n+1的序列A,其中的每个数都是不大于n的正整数,且n以内每个正整数至少出现一次. 对于每一个正整数k=1, ...