Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题
程序员文章站
2024-03-12 21:41:44
废话不多说了,直接给大家贴代码了,具体代码如下所示:
//文件上传
public static boolean uploadtoftp(string url,i...
废话不多说了,直接给大家贴代码了,具体代码如下所示:
//文件上传 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<fs.length;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 web服务器简单实现一个Servlet容器
下一篇: Java中常用的类型转换(推荐)