java ftp 快_Java ftp上传文件方法效率对比

发布时间:2023-07-29 18:30

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 上传文件和下载文件

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

.net ftp上传文件方法

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

java ftp上传文件

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

java ftp上传文件 工具类

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

再看ftp上传文件

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

FTP 上传文件

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

Ftp上传文件

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

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

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

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

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

随机推荐

HDU 4757 Tree 可持久化字典树

Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4757 Des ...

java开发webservice

第一部分:相关下载配置 1.开发环境   eclipse-jee-mars-2-win32-x86_64.zip  http://www.eclipse.org/downloads/index-pac ...

[置顶] PHP开发实战权威指南-读书总结

从今年开始,断断续续学习PHP已经有4个月了. 最初,认真学习PHP几天,就弄WordPress搭建了一个个人博客,这也符合技术人的实践理念. 最近,重温PHP开发实战权威指南,做点总结,整理下自己学 ...

Java Web开发: Tomcat中部署项目的三种方法

web开发,在tomcat中部署项目的方法: 可以参考http://m.blog.csdn.net/blog/u012516903/15741727 定义$CATALINA_HOME指的是Tomcat ...

MongoDB添加secondary节点的两种方法

前段时间维护的一个事业群的其中一条业务线的开发找到运维,提出来了一个MongoDB的优化问题,那段时间MongoDB正在从op管理移交给db进行维护,整个部门都对MongoDB的运维经验缺乏,Mong ...

开放标准-http://www.open-std.org/

版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianguozheng/article/details/37654877 http://www.op ...

Java继承(下)

Object类 在www.oracle中找到java 中的java.lang在中找到object类中找到可以看到在java语言中的定义 如何修改object中的equals类及测试 在object中类 ...

Spring RestTemplate 中文乱码问题

1.原因 由于RestTemplate的默认构造方法初始化的StringHttpMessageConverter的默认字符集是ISO-8859-1,所以导致RestTemplate请求的响应内容会出现 ...

Android的GridView控件点击图片变暗效果

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setC ...

使用 vux 框架

1)vux官网:https://vux.li/#/ 2)通过 vue-cli 工具使用 vux 1.如果没有安装 nodejs,请先前往 nodejs 官网下载并安装 nodejs,传送门:https ...

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号