Java ftp上传文件方法效率对比

一、功能简介:

txt文件采用ftp方式从windows传输到Linux系统;

二、ftp实现方法

(1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的txt文件需要15秒;

//FTP传输到数据库服务器
public boolean uploadServerByFtp(String fileNmae){
  boolean flag = true;
//客户端数据文件路径
String client_path = "D://answer/data/";
//服务器上的存放数据文件路径
String server_path = "/home/download/file_tmp/";
String hostname = "192.25.125.112";
String ftpusername = "root";
String ftppwd = “123456”;
int port = 21;//查找路径下的指定txt文件,然后采用FTP上传
File file_name = new File(client_path+fileNmae);
if(!file_name.exists()){
  return false;
}
//创建ftp客户端
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("utf-8");
//主动模式
ftpClient.enterLocalActiveMode();
String getfileName = file_name.getName();
String getfileNamePath = file_name.getPath();
if((getfileName.substring(getfileName.lastIndexOf(".")).trim().equals(".txt"))){
  try {
  //链接ftp服务器
ftpClient.connect(hostname, port);
//登录ftp
ftpClient.login(ftpusername, ftppwd);
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
   ftpClient.disconnect();
logger.info("Returns a 530 password username error or the current user does not have permission to close the FTP connection");
return false;
}
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
String server_file_name = server_path+ getfileName;
InputStream input = new FileInputStream(getfileNamePath);
OutputStream out = ftpClient.storeFileStream(server_file_name);
byte[] byteArray = new byte[4096];
int read = 0;
while ((read = input.read(byteArray)) != -1) {
  out.write(byteArray, 0, read);
}
out.close();
ftpClient.logout();
} catch (SocketException e) {
flag = false;
e.printStackTrace();
} catch (IOException e) {
flag = false;
e.printStackTrace();
} catch (Exception e) {
flag = false;
e.printStackTrace();
}finally {
  if (ftpClient.isConnected()) {
  try {
  ftpClient.disconnect();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
return flag;
}

(2)方法二:storeFile()方法,没有设置缓冲区,速度慢,50M的txt文件需要100秒;

//FTP传输到数据库服务器
public boolean uploadServerByFtp(String fileNmae){
  boolean flag = true;
//客户端数据文件路径
String client_path = "D://answer/data/";
//服务器上的存放数据文件路径
String server_path = "/home/download/file_tmp/";
String hostname = "192.25.125.112";
String ftpusername = "root";
String ftppwd = “123456”;
int port = 21;
//查找路径下的指定txt文件,然后采用FTP上传
File file_name = new File(client_path+fileNmae);
if(!file_name.exists()){
  return false;
}
//创建ftp客户端
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("utf-8");
String getfileName = file_name.getName();
String getfileNamePath = file_name.getPath();
if((getfileName.substring(getfileName.lastIndexOf(".")).trim().equals(".txt"))){
  try {
  //链接ftp服务器
ftpClient.connect(hostname, port);
//登录ftp
ftpClient.login(ftpusername, ftppwd);
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
   ftpClient.disconnect();
logger.info("Returns a 530 password username error or the current user does not have permission to close the FTP connection");
return false;
}
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
String server_file_name = server_path+ getfileName;
//读取源文件流(客户端文件)
InputStream client_fileInput = new FileInputStream(getfileNamePath);
//传送到服务端
ftpClient.storeFile(server_file_name, client_fileInput);
client_fileInput.close();
ftpClient.logout();
} catch (SocketException e) {
flag = false;
e.printStackTrace();
} catch (IOException e) {
flag = false;
e.printStackTrace();
} catch (Exception e) {
flag = false;
e.printStackTrace();
}finally {
  if (ftpClient.isConnected()) {
  try {
  ftpClient.disconnect();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
return flag;
}

Java ftp上传文件方法效率对比的更多相关文章

  1. Java ftp 上传文件和下载文件

    今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...

  2. .net ftp上传文件方法

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...

  3. java ftp上传文件

    /** * 上传文件到ftp * @param server * @param user * @param pwd * @param filenames */ public static void u ...

  4. java ftp上传文件 工具类

    package com.learning.spboot.utils; import com.jcraft.jsch.*; import org.apache.commons.net.ftp.FTPCl ...

  5. 再看ftp上传文件

    前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在 ...

  6. FTP 上传文件

    有时候需要通过FTP同步数据文件,除了比较稳定的IDE之外,我们程序员还可以根据实际的业务需求来开发具体的工具,具体的开发过程就不细说了,这里了解一下通过C#实现FTP上传文件到指定的地址. /// ...

  7. Ftp上传文件

    package net.util.common; import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...

  8. C# FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址。"的错误

    FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址."的错误 解决方法是在原代码上增加这句话 reqFTP.UsePassive = f ...

  9. PHP使用FTP上传文件到服务器(实战篇)

    我们在做开发的过程中,上传文件肯定是避免不了的,平常我们的程序和上传的文件都在一个服务器上,我们也可以使用第三方sdk上传文件,但是文件在第三方服务器上.现在我们使用PHP的ftp功能把文件上传到我们 ...

随机推荐

  1. poj3662 Telephone Lines【最短路】【二分】

    http://poj.org/problem?id=3662 Telephone Lines Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  2. 背包----Proud merchants

    一件物品p,q,v 分别表示物品的价格,钱少于q时就不能买,和物品的价值 n表示物品数量,m表示初始有的钱 问最多能买多少东西 01背包 注意点是,因为有一个q作为限制条件,所以n件物品不是随意选的了 ...

  3. c++中用vector创建多维数组的初始化方法

    最近调试一个程序,在使用vector声明一个二维数组时出现错误.错误的方法如下所示: std::vector<std::vector<double> > sphereGrid; ...

  4. Centos6.10安装tomcat

    1.  下载tomcat 2.  解压到相应的路径下 tar -xzvf apache-tomcat-8.5.34.tar.gz 3.  启动tomcat # 进入"apache-tomca ...

  5. 洛谷P3243 [HNOI2015]菜肴制作 拓扑排序+贪心

    正解:拓扑排序 解题报告: 传送门! 首先看到它这个约束就应该要想到拓扑排序辣QwQ 首先想到的应该是用优先队列代替队列,按照节点编号排序 然后也很容易被hack:<5,1> 正解应为5, ...

  6. CF359B Permutation 构造

    正解:构造 解题报告: 这个是传送门! 昂直接讲思路趴?毕竟这种构造题的话除了思路也没什么好说的只要想明白辽还是通常来说难度不大的QwQ 首先提供一个对正解毫无启发的由正解启发而来的想法QAQ 就首先 ...

  7. on条件与where条件的区别(转)

    add by zhj: 以为一直以为on和where是等价于,直到看到这篇文章,并亲自测试,才知道原来他们的功能不一样. 可以这样理解:on是在生成连接表的起作用的,where是生成连接表之后对连接表 ...

  8. html+css小总结

    html+css小总结 1.块级元素 <div> <h1> <hr /> <p> <pre> <ol> <ul> & ...

  9. HandlerThread分析

    Handy class for starting a new thread that has a looper. The looper can then be used to create handl ...

  10. 【服务器】如何在服务器发布网站?Sasa讲解

    一.网站发布过程 1.可以在淘宝.万维网上买服务器,然后客服提供一个服务器的远程ip链接,我们通过我们电脑的远程去链接这个远程服务器就可以对这个服务器进行控制了.. 2.将待发布网站的程序在本地保存, ...