废话不多说了,直接给大家贴代码了,具体代码如下所示:

//文件上传

public static boolean uploadToFTP(String url,int port,String username,String password,String path,String filename,InputStream input)

{

boolean success=false;

FTPClient ftp=new FTPClient();//org.apache.commons.net.ftp

try{

if(port>-1)

{

ftp.connect(url,port);

}else{

ftp.connect(url);//ftp默认的端口是21

}

//很多人写的是用ftp.getReplyCode()给获取连接的返回值,但是这样会导致storeFileStream返回null

if(ftp.login(username,password))

{

ftp.enterLocalActiveMode();

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

//创建目录,如果存在会返回失败

ftp.makeDirectory(path);

//切换目录

ftp.changeWorkingDirectory(path);

//上传文件

//FTP协议规定文件编码格式为ISO-8859-1

filename=new String(filename.getBytes("GBK"),"ISO-8859-1");

OutputStream out=ftp.storeFileStream(filename);

byte[]byteArray=new byte[4096];

int read=0;

while((read=input.read(byteArray))!=-1)

{

out.write(byteArray,0,read);

}

out.close();

ftp.logout();

sucess=true;

}

}

catch(Exception e)

{

}

finally{

if(ftp.isConnected())

{

ftp.disConnecct();

}

}

}

//文件下载

public static boolean downloadFromFTP(String url,int port,String username,String password,String path,String localpath)

{

boolean success=false;

FTPClient ftp=new FTPClient();//org.apache.commons.net.ftp

try{

int reply;

if(port>-1)

{

ftp.connect(url,port);

}else{

ftp.connect(url);//ftp默认的端口是21

}

//很多人写的是用ftp.getReplyCode()给获取连接的返回值,但是这样会导致storeFileStream返回null

ftp.login(username,password)

ftp.enterLocalActiveMode();

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

reply=ftp.getReplyCode();

if(!FTPReply.isPositionCompletion(reply))

{

ftp.disconnect();

return success;s

}

//切换目录 此处可以判断,切换失败就说明ftp上面没有这个路径

ftp.changeWorkingDirectory(path);

//上传文件

FTPFile[]fs=ftp.listFiles();

OutputStream out=null;

InputStream in=null;

for(int i=0;i

{

FTPFile ff=fs[i];

String outFileName=ff.getName();

//创建本地的文件时候要把编码格式转回来

String localFileName=new String(ff.getName().getBytes("ISO-8859-"),"GBK");

File localFile=new File(localpath+lcoalFileName);

out=new FileOutputStream(localFile);

in=ftp.retrieveFileStream(outFileName);

byte[]byteArray=new byte[4096];

int read=0;

while((read=in.read(byteArray))!=-1)

{

out.write(byteArray,0,read);

}

//这句很重要 要多次操作这个ftp的流的通道,要等他的每次命令完成

ftp.completePendingCommand();

out.flush();

out.close();

ftp.logout();

sucess=true;

}

catch(Exception e)

{

}

finally{

if(ftp.isConnected())

{

ftp.disConnecct();

}

}

}

以上所述是小编给大家介绍的Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对聚米学院网站的支持!

java ftp 下载慢_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题相关推荐

  1. java批量上传文件_Java 批量大文件上传下载

    第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname =  ...

  2. java文件下载用什么技术_Java中实现文件上传下载的三种解决方案(推荐)

    javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 Save 改进后的代码不需要for ...

  3. 文件上传,服务器文件名中文乱码

    日前刚刚解决的乱码问题,在windows本地调用文件上传接口时,中文名显示没问题,但是一旦文件上传到Linux服务器之后,就会出现中文乱码问题,如中文名变成???等,看了很久找到问题,以此记录一下解决 ...

  4. java实现excel文件上传_java相关:SpringMVC下实现Excel文件上传下载

    java相关:SpringMVC下实现Excel文件上传下载 发布于 2020-6-21| 复制链接 摘记: 在实际应用中,经常会遇到上传Excel或者下载Excel的情况,比如导入数据.下载统计数据 ...

  5. 文件上传 java web_JavaWeb 文件上传下载

    1. 文件上传下载概述 1.1. 什么是文件上传下载 所谓文件上传下载就是将本地文件上传到服务器端,从服务器端下载文件到本地的过程.例如目前网站需要上传头像.上传下载图片或网盘等功能都是利用文件上传下 ...

  6. 【Java编程系列】Minio实现文件上传下载

    热门系列: [Java编程系列]Amazon S3实现文件上传下载 目录 热门系列: 1.前言 2.Minio实战代码 2.1 Minio环境部署 2.2 Minio的Sdk对接实现 2.2.1 Mi ...

  7. 基于华为云obs实现文件上传下载(技术栈mysql+springboot+Maven+jsp+java)的技术分享

    基于华为云obs实现文件上传下载(技术栈mysql+springboot+jsp+java)的技术分享 obs实现文件上传下载 前言 一.OBS是什么? 二.使用步骤 1.1 前期准备 2 工具的内容 ...

  8. SpringMVC整合fastdfs-client-java实现web文件上传下载

    为什么80%的码农都做不了架构师?>>>    版权声明:本文为博主原创文章,转载请标明出处(http://blog.csdn.net/wlwlwlwl015)Thanks. 目录( ...

  9. 项目_功能模块_基于Spring Boot的文件上传下载功能的设计与实现

    文章目录 基于Spring Boot的文件上传下载功能模块的设计与实现 1.前言 2.技术栈 3.关键源码 4.实现效果 4.1.登录 4.2.文件列表 4.3.上传文件测试 4.3.1.测试图片 4 ...

  10. 直链文件上传下载网站分享(二)

    直链文件上传下载网站分享(一) 直链文件上传下载网站分享(二) 八.GM帮登陆器列表空间 九.墨涩网外链系统 十.树洞外链 十一.豆子外链 十二.凡人外链 十三.图钉外链 十四.小西外链 直链文件上传 ...

最新文章

  1. 新版“峡谷第一美”妲己尾巴毛发制作分享
  2. C++总结笔记(十一)—— Lambda表达式的应用
  3. 深入解析Node.js setTimeout方法的执行过程
  4. [转] ASP.NET中使用javascript
  5. sublime_text_2 注册
  6. 黑客入侵电脑网络四大步骤全面曝光
  7. 统一身份认证系统方案
  8. 基于easyui的 增 删 改 查
  9. 一个ETF基金经理的心路历程
  10. 爬虫爬取的网页源代码是\uxxxx格式的,如何进行解码?
  11. 蚂蚁金服智能推荐引擎解决方案与实践
  12. 计算机不识别固态硬盘,win7系统电脑无法识别M.2固态硬盘如何解决
  13. GIF录制编辑工具(GifCam)
  14. 【gev】 Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
  15. 初识mapbox GL
  16. 高中计算机教师研究方向,高中信息技术教师专业知识研究
  17. Java/Sacla 获取间隔内的全部日期
  18. 网络图标出现小地球,但可以正常上网的解决方法
  19. win10+vs2019+FFTW64位安装配置保姆教程
  20. 年轻人选择逃离制造业,阿里却年薪90万招聘智能制造人才

热门文章

  1. Excel的加密和解密
  2. c 语言冒泡排序,c 语言冒泡排序
  3. 阿里神器 Arthas 有多强?教你一招定位线上Bug!
  4. Java程序员必备:序列化全方位解析
  5. (SpringMVC)Controller返回JSON数据
  6. 我们编写的C代码是怎样跑起来的?
  7. Mybatis-Plus入门之通用CRUD+基本配置介绍
  8. opensuse 12.1 启动脚本
  9. Java对象序列化详解
  10. css3 手机信号,CSS3 无线路由器连接信号动画