`

java中利用Ftp向服务器传文件

    博客分类:
  • java
 
阅读更多
此代码需要引入commons-net-1.4.1.jar

package com.test;

import java.io.ByteArrayInputStream;
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.io.OutputStream;
import java.io.UnsupportedEncodingException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.junit.Test;

public class FtpUtil {
 /**
   * Description: 向FTP服务器上传文件
   * @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 boolean uploadFile(String url, int port, String username,
    String password, String path, String filename, InputStream input) {
   // 初始表示上传失败
   boolean success = false;
   // 创建FTPClient对象
   FTPClient ftp = new FTPClient();
   try {
    int reply;
    // 连接FTP服务器
    // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
   // ftp.connect(url);
    ftp.connect(url, port);
    // 登录ftp
    ftp.login(username, password);
    // 看返回的值是不是230,如果是,表示登陆成功
    reply = ftp.getReplyCode();
    // 以2开头的返回值就会为真
    if (!FTPReply.isPositiveCompletion(reply)) {
     ftp.disconnect();
     return success;
    }
    // 转到指定上传目录
    ftp.changeWorkingDirectory(path);
    // 将上传文件存储到指定目录
    ftp.storeFile(filename, input);
    // 关闭输入流
    input.close();
    // 退出ftp
    ftp.logout();
    // 表示上传成功
    success = true;
   } catch (IOException e) {
    e.printStackTrace();
   } finally {
    if (ftp.isConnected()) {
     try {
      ftp.disconnect();
     } catch (IOException ioe) {
     }
    }
   }
   return success;
  }  
  
   /**
   * Description: 从FTP服务器下载文件
   * @param url  FTP服务器hostname
   * @param port   FTP服务器端口
   * @param username  FTP登录账号
   * @param password   FTP登录密码
   * @param remotePath   FTP服务器上的相对路径
   * @param fileName  要下载的文件名
   * @param localPath  下载后保存到本地的路径
   * @return
   */
  public boolean downFile(String url, int port, String username,
    String password, String remotePath, String fileName,
    String localPath) {
   // 初始表示下载失败
   boolean success = false;
   // 创建FTPClient对象
   FTPClient ftp = new FTPClient();
   try {
    int reply;
    // 连接FTP服务器
    // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
    ftp.connect(url, port);
    // 登录ftp
    ftp.login(username, password);
    reply = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
     ftp.disconnect();
     return success;
    }      // 转到指定下载目录
    ftp.changeWorkingDirectory(remotePath);
    // 列出该目录下所有文件
    FTPFile[] fs = ftp.listFiles();
    // 遍历所有文件,找到指定的文件
    for (FTPFile ff : fs) {
     if (ff.getName().equals(fileName)) {
      // 根据绝对路径初始化文件
      File localFile = new File(localPath + "/" + ff.getName());
      // 输出流
      OutputStream is = new FileOutputStream(localFile);
      // 下载文件
      ftp.retrieveFile(ff.getName(), is);
      is.close();
     }
    }
    // 退出ftp
    ftp.logout();
    // 下载成功
    success = true;
   } catch (IOException e) {
    e.printStackTrace();
   } finally {
    if (ftp.isConnected()) {
     try {
      ftp.disconnect();
     } catch (IOException ioe) {
     }
    }
   }
   return success;
  }

 /**
  * 将本地文件上传到FTP服务器上
  * 
  */
  public static void main(String[] args) {
   try {
    FileInputStream in = new FileInputStream(new File("D:/test.txt"));
    FtpUtil util=new FtpUtil();
    boolean flag = util.uploadFile("218.240.49.146", 21, "lw", "lw",
      "/", "a.txt", in);
    System.out.println(flag);
   } catch (Exception e) {
    e.printStackTrace();
   }
 }
// @Test
// 
// public void testUpLoadFromDisk() {
//  try {
//   FileInputStream in = new FileInputStream(new File("D:/test.txt"));
//   boolean flag = uploadFile("218.240.49.146", 21, "lw", "lw",
//     "D:/test", "a.txt", in);
//   System.out.println(flag);
//  } catch (Exception e) {
//   e.printStackTrace();
//  }
// }

 /**
  * 在FTP服务器上生成一个文件,并将一个字符串写入到该文件中
  */
// @Test
// public void testUpLoadFromString() {
//  try {
//   InputStream input = new ByteArrayInputStream("test ftp"
//     .getBytes("utf-8"));
//   boolean flag = uploadFile("127.0.0.1", 21, "test", "test",
//     "D:/ftp", "test.txt", input);
//   System.out.println(flag);
//  } catch (UnsupportedEncodingException e) {
//   e.printStackTrace();
//  }
// }

}

commons-net-1.4.1.jar

 

分享到:
评论

相关推荐

    基于strurs2文件上传,利用FTP将文件直接上传至指定的FTP服务器

    基于strurs2文件上传,利用FTP将文件直接上传至指定的FTP服务器

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

    实现遍历FTP服务器目录 实现获取本地文件图标 实现利用多线程实现FTP 文件上传,下载 本地文件与FTP文件的维护操作

    Java高级程序设计实验报告-FTP服务器设计与实现.doc

    在这份报告中,我们首先会深入讨论FTP(文件传输协议)的概念和用途,明确FTP服务器在现代计算环境中的重要性。接着,我们将引导读者进入FTP服务器的设计和实现过程,以及如何应用Java高级编程技术来构建一个强大、...

    利用java连接发图片服务器上传下载文件,所需的jar包

    有时候我们需要在程序中连接ftp服务器进行文件上传,下载工作,这时候我们就会需要jar包支持我们的想法,一共需要连个jar包

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

    利用进程通信套接字socket 的编程接口功能,设计和实现了一个简单的文件传输协议。此为FTP服务器端。

    java源码包3

    Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例...

    ftpDemo.rar

    在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。 默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输...

    java源码包---java 源码 大量 实例

    Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个...

    java基于Apache FTP点断续传的文件上传和下载

    本篇文章主要介绍了java基于Apache FTP点断续传的文件上传和下载,利用FTP实现文件的上传和下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

    JAVA上百实例源码以及开源项目

    Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个...

    java源码包2

    Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例...

    Java Ftp上传下载

    近来做的一个项目因需要大量上传大文件且要求速度快,因此选择了FTP上传,在网上...FTP服务器登录所需的参数采用属性文件存放,这样有利用在应用过程中进行修改。代码中有比较详细的注解,希望对有需要的人能起到帮助

    java源码包4

    Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例...

    JAVA上百实例源码以及开源项目源代码

    Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个...

    Java源码包100个设计实例.zip

    Java利用DES私钥对称加密代码实例 Java加密解密工具集 JCT v1.0源码包.rar Java半透明图片实现的步骤及源代码.rar Java右键弹出菜单源码 Java吃豆子游戏源代码.rar Java图片加水印,支持旋转和透明度设置 Java圆形...

    FtpUtils.java

    ftp服务上传下载工具类,FTP(File Transfer Protocol,文件传输协议) ...在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示...

    Android FTP服务器上传文件攻略(代码详解)

    在开发中,会遇到向FTP服务器上传文件的需求,首先要导入 commons-net-3.3.jar 然后利用api进行相关操作,具体功能如下: Ftp相关代码 import android.util.Log; import org.apache.commons.net.ftp.FTP; import org...

    JAVA中使用FTPClient实现文件上传下载

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。  一、上传文件  原理不介绍了,大家直接...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示...

Global site tag (gtag.js) - Google Analytics