java ftp 中文上传_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...
//文件上传
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();
}
}
}
上面代码都在博客园编辑器手敲的可能会有些错误,上面两种方式速度都很块 比上传用storeFile 下载用retrieveFile这种方法快很多
java ftp 中文上传_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...相关推荐
- java如何处理csv文件上传_java处理csv文件上传示例
前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理. ReadCsvUtil工具类 package com.hanfengyeqiao.g ...
- java上传csv文件上传_java处理csv文件上传示例详解
前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理. readcsvutil工具类 package com.hanfengyeqiao.g ...
- java 远程接口 文件上传_java中远程http文件上传及file2multipartfile
1 public static Map executeDriverServer(String driverUrl, Map param,String multipart, String content ...
- java ftp 下载慢_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题
废话不多说了,直接给大家贴代码了,具体代码如下所示: //文件上传 public static boolean uploadToFTP(String url,int port,String usern ...
- java http 上传大文件上传_java实现大文件的上传
最近项目经理逼着让偶做树的展开,表嵌套表,可惜偶刚参加工作,水平低,这不在查资料嘛,可是不多久就传来了经理的叫嚣声,这么简单的东西,都一天了,你还没做完..................,哎真是郁闷 ...
- ubuntu下linux:curl使用ftp获取服务器上指定目录的所有文件集合以及下载
curl使用ftp获取服务器上指定目录的所有文件集合以及下载 直接编译可用,注意修改测试main函数内的字符串,注释我觉得写的挺详细了,跑不起来的评论区可问 头文件 #ifndef FTP_DOWNL ...
- 文件上传linux服务器,Linux 文件上传Linux服务器
进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...
- php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例
搜索热词 @H_404_0@本文实例讲述了PHP单文件上传原理及上传函数的封装操作.分享给大家供大家参考,具体如下: @H_404_0@表单: @H_404_0@0.PHP: 无标题文档 请选择您要上 ...
- SSM框架使用Layui文件上传插件实现多文件上传(多文件列表)
SSM框架使用Layui文件上传插件实现多文件上传(多文件列表) pom.xml文件的配置 想要实现SSM框架实现多文件上传,必要的jar包必须要在pom.xml文件中引入.如下: <!--co ...
- php 文件上传mime 类型,php文件上传类型(MIME)对照表
网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特色),学php的人都知道文件上传怎么做,但很多人在编程中却 ...
最新文章
- 【NOIP校内模拟】T2 华莱士(环套树)
- 对话吴恩达:为什么说制造业会是首个聚焦AI转型的行业?
- 「天才少年」稚晖君调戏机械臂!加上AI视觉,2小时学会抓螺母
- [转]CSS3 transform顺序问题
- 【jQuery】parent()和parents遍历
- tomcat JRE_HOME
- springMVC源码分析
- (转)区间合并pushup函数模板
- java 8 并行_Java 8新特性之 并行和并行数组(八恶人-8)
- consul的安装搭建
- 【华为云技术分享】《跟唐老师学习云网络》 - Tcpdump大杀器抓包
- android获取当前位置经纬度,Android中通过GPS或NetWork获取当前位置的经纬度
- Layui表单验证lay-verify属性
- matlab打靶法求解薛定谔方程,用MATLAB语言解氢原子与类氢离子的定态薛定谔方程...
- 编译原理——中间代码生成(逆波兰表示)
- css中“~”(波浪号)、“,”(逗号)、 “ + ”(加号)和 “ ”(大于号)是什么意思?
- 自定义android控件EditText边框背景
- Codingame平台“CHUCK NORRIS”的实现
- Unable to find instance for XXXX
- 502 Bad Gateway 怎么解决?
热门文章
- 如何通过 Impex 在 SAP Commerce Cloud 创建一个新的 Component
- SAP UI5 应用开发教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor
- 介绍一个能将任意关键字高亮实现的 Visual Studio Code 扩展
- Angular Route数据结构里常用字段使用方法一览
- Angular jasmine returnValue方法的实现原理
- SAP Spartacus 关于列表点击focus Accessibility的需求
- 国内SAP UI5使用者关于性能优化和UI5 Web Component的讨论
- SAP Spartacus单元测试用例中Component构造函数的调用上下文
- SAP Hybris和Netweaver的租户隔离(Tenant isolation)机制设计
- SAP ABAP maintanence view的数据校验机制