Java實現(xiàn)ftp文件上傳下載解決慢中文亂碼多個文件下載等問題
更新時間:2016年10月19日 15:16:00 投稿:mrr
這篇文章主要介紹了Java實現(xiàn)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); //創(chuàng)建目錄,如果存在會返回失敗 ftp.makeDirectory(path); //切換目錄 ftp.changeWorkingDirectory(path); //上傳文件 //FTP協(xié)議規(guī)定文件編碼格式為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(); //創(chuàng)建本地的文件時候要把編碼格式轉回來 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實現(xiàn)ftp文件上傳下載解決慢中文亂碼多個文件下載等問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
Java?8?的異步編程利器?CompletableFuture的實例詳解
這篇文章主要介紹了Java?8?的異步編程利器?CompletableFuture?詳解,本文通過一個例子給大家介紹下Java?8??CompletableFuture異步編程的相關知識,需要的朋友可以參考下2022-03-03SpringBoot將Spring fox更換為Springdoc的方法詳解
由于項目中使用Spring fox已經不維護更新了,代碼掃描,掃出問題,需要將Spring fox更換為Spring Doc,所以本文給大家介紹了SpringBoot將Spring fox更換為Springdoc的方法,文中有相關的代碼供大家參考,需要的朋友可以參考下2024-01-01El表達式使用問題javax.el.ELException:Failed to parse the expression
今天小編就為大家分享一篇關于Jsp El表達式使用問題javax.el.ELException:Failed to parse the expression的解決方式,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12