亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

JAVA實現FTP斷點上傳的方法

2019-11-26 15:08:17
字體:
來源:轉載
供稿:網友

本文實例講述了JAVA實現FTP斷點上傳的方法。分享給大家供大家參考。具體分析如下:

這里主要使用apache中的net包來實現。網址http://commons.apache.org/net/。具體包的下載和API文檔請看官網。 斷點上傳就是在上傳的過程中設置傳輸的起始位置。并設置二進制傳輸。

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; public class ContinueFTP {    private FTPClient ftpClient = new FTPClient();    public ContinueFTP(){      //設置將過程中使用到的命令輸出到控制臺      this.ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));    }    /**    * java編程中用于連接到FTP服務器    * @param hostname 主機名    * @param port 端口    * @param username 用戶名    * @param password 密碼    * @return 是否連接成功    * @throws IOException    */    public boolean connect(String hostname,int port,String username,String password) throws IOException{      ftpClient.connect(hostname, port);      if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){        if(ftpClient.login(username, password)){          return true;        }      }      disconnect();      return false;    }    /**    * 從FTP服務器上下載文件    * @param remote 遠程文件路徑    * @param local 本地文件路徑    * @return 是否成功    * @throws IOException    */    public boolean download(String remote,String local) throws IOException{      ftpClient.enterLocalPassiveMode();      ftpClient.setFileType(FTP.BINARY_FILE_TYPE);      boolean result;      File f = new File(local);      FTPFile[] files = ftpClient.listFiles(remote);      if(files.length != 1){        System.out.println("遠程文件不唯一");        return false;      }      long lRemoteSize = files[0].getSize();      if(f.exists()){        OutputStream out = new FileOutputStream(f,true);        System.out.println("本地文件大小為:"+f.length());        if(f.length() >= lRemoteSize){          System.out.println("本地文件大小大于遠程文件大小,下載中止");          return false;        }        ftpClient.setRestartOffset(f.length());        result = ftpClient.retrieveFile(remote, out);        out.close();      }else {        OutputStream out = new FileOutputStream(f);        result = ftpClient.retrieveFile(remote, out);        out.close();      }      return result;    }    /**    * 上傳文件到FTP服務器,支持斷點續傳    * @param local 本地文件名稱,絕對路徑    * @param remote 遠程文件路徑,使用/home/directory1/subdirectory/file.ext 按照Linux上的路徑指定方式,支持多級目錄嵌套,支持遞歸創建不存在的目錄結構    * @return 上傳結果    * @throws IOException    */    public UploadStatus upload(String local,String remote) throws IOException{      //設置PassiveMode傳輸      ftpClient.enterLocalPassiveMode();      //設置以二進制流的方式傳輸      ftpClient.setFileType(FTP.BINARY_FILE_TYPE);      UploadStatus result;      //對遠程目錄的處理      String remoteFileName = remote;      if(remote.contains("/")){        remoteFileName = remote.substring(remote.lastIndexOf("/")+1);        String directory = remote.substring(0,remote.lastIndexOf("/")+1);        if(!directory.equalsIgnoreCase("/")&&!ftpClient.changeWorkingDirectory(directory)){          //如果遠程目錄不存在,則遞歸創建遠程服務器目錄          int start=0;          int end = 0;          if(directory.startsWith("/")){            start = 1;          }else{            start = 0;          }          end = directory.indexOf("/",start);          while(true){            String subDirectory = remote.substring(start,end);           if(!ftpClient.changeWorkingDirectory(subDirectory)){              if(ftpClient.makeDirectory(subDirectory)){                ftpClient.changeWorkingDirectory(subDirectory);              }else {                System.out.println("創建目錄失敗");                return UploadStatus.Create_Directory_Fail;             }            }            start = end + 1;            end = directory.indexOf("/",start);            //檢查所有目錄是否創建完畢            if(end <= start){              break;            }          }        }      }      //檢查遠程是否存在文件      FTPFile[] files = ftpClient.listFiles(remoteFileName);      if(files.length == 1){        long remoteSize = files[0].getSize();        File f = new File(local);        long localSize = f.length();        if(remoteSize==localSize){          return UploadStatus.File_Exits;        }else if(remoteSize > localSize){          return UploadStatus.Remote_Bigger_Local;        }        //嘗試移動文件內讀取指針,實現斷點續傳        InputStream is = new FileInputStream(f);        if(is.skip(remoteSize)==remoteSize){          ftpClient.setRestartOffset(remoteSize);          if(ftpClient.storeFile(remote, is)){            return UploadStatus.Upload_From_Break_Success;          }        }        //如果斷點續傳沒有成功,則刪除服務器上文件,重新上傳        if(!ftpClient.deleteFile(remoteFileName)){          return UploadStatus.Delete_Remote_Faild;        }        is = new FileInputStream(f);        if(ftpClient.storeFile(remote, is)){            result = UploadStatus.Upload_New_File_Success;        }else{          result = UploadStatus.Upload_New_File_Failed;        }        is.close();      }else {        InputStream is = new FileInputStream(local);        if(ftpClient.storeFile(remoteFileName, is)){          result = UploadStatus.Upload_New_File_Success;        }else{          result = UploadStatus.Upload_New_File_Failed;        }        is.close();      }      return result;    }    /**    * 斷開與遠程服務器的連接    * @throws IOException    */    public void disconnect() throws IOException{      if(ftpClient.isConnected()){        ftpClient.disconnect();      }    }    public static void main(String[] args) {      ContinueFTP myFtp = new ContinueFTP();      try {        myFtp.connect("192.168.21.171", 21, "test", "test");        System.out.println(myFtp.upload("E://VP6.flv", "/MIS/video/VP6.flv"));        myFtp.disconnect();      } catch (IOException e) {        System.out.println("連接FTP出錯:"+e.getMessage());      }    } }

希望本文所述對大家的java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品免费久久久| 亚洲精品美女在线观看| 亚洲91精品在线观看| 国产精品白丝jk喷水视频一区| 国产成人精品免费视频| 精品久久久91| 亚洲精品免费av| 不卡中文字幕av| 亚洲精品www久久久| 亚洲免费影视第一页| 欧美精品免费在线| 国产一区二区三区久久精品| 日韩人体视频一二区| 91精品视频一区| 欧美日韩国产成人高清视频| 国产精品草莓在线免费观看| 欧美性猛交xxxx免费看| 欧美性猛交xxxx免费看漫画| 91中文精品字幕在线视频| 中文字幕亚洲综合久久筱田步美| 亚洲国产婷婷香蕉久久久久久| 久久久欧美一区二区| 欧美成人四级hd版| 欧美在线性爱视频| 色与欲影视天天看综合网| 国产精品激情自拍| 日韩欧美福利视频| 日韩精品在线免费播放| 91欧美日韩一区| 亚洲黄色在线看| 国产91色在线|| 亚洲资源在线看| 久久亚洲综合国产精品99麻豆精品福利| 成人激情视频在线观看| 久久久亚洲成人| 国产suv精品一区二区| 91国产视频在线播放| 高跟丝袜一区二区三区| 亚洲精品免费一区二区三区| 亚洲аv电影天堂网| 亚洲第一视频在线观看| 久久久久亚洲精品国产| 欧美激情高清视频| xxx一区二区| 日韩视频一区在线| 91精品国产91久久久| 日韩欧美中文字幕在线观看| 久久久女人电视剧免费播放下载| 久久精品国产一区二区电影| 91av在线国产| 青青草原一区二区| 日韩中文字幕视频在线观看| 啪一啪鲁一鲁2019在线视频| 成人网址在线观看| 欧美午夜精品久久久久久浪潮| 欧美小视频在线| 日韩av在线网址| 欧美日韩亚洲高清| 亚洲欧美日韩在线高清直播| 欧美在线视频免费播放| 日韩电影视频免费| 国产+人+亚洲| 国产精品日韩在线观看| 亚洲影影院av| 国产丝袜精品第一页| 欧美激情2020午夜免费观看| 日韩精品在线免费| 久久九九全国免费精品观看| 国产精品一区二区久久国产| 国产精品永久在线| 日韩精品福利网站| 久久亚洲电影天堂| 欧美色xxxx| 亚洲图片欧洲图片av| 欧美性理论片在线观看片免费| 日韩av在线免费播放| 亚洲第一色中文字幕| 国产欧美精品xxxx另类| 欧美尺度大的性做爰视频| 日韩最新在线视频| 成人高h视频在线| 国产精品精品视频| 91精品视频一区| 欧美大片在线影院| 亚洲激情 国产| 欧美性视频网站| 欧美精品www在线观看| 日本中文字幕久久看| 久久精品国产v日韩v亚洲| 亚洲日本欧美日韩高观看| 2019中文字幕全在线观看| 亚洲久久久久久久久久久| 91精品视频在线免费观看| 亚洲精品99999| 91国偷自产一区二区三区的观看方式| 亚洲欧美成人一区二区在线电影| 欧美精品在线免费观看| 日韩精品在线免费播放| 精品国偷自产在线| 欧美中文字幕精品| 岛国av一区二区在线在线观看| 欧美成人午夜视频| 亚洲在线第一页| 九九精品视频在线| 亚洲视频一区二区三区| 久久久久久国产精品久久| 国产精品一二三视频| 久久精品2019中文字幕| 亚洲老头老太hd| 亚洲国产精品人久久电影| 91免费看片网站| 日本道色综合久久影院| yw.139尤物在线精品视频| 日韩在线观看免费高清| 欧美性猛交xxxx乱大交3| 97激碰免费视频| 国产一级揄自揄精品视频| 亚洲激情视频在线| 精品国产一区二区三区久久久| 国产亚洲精品久久| 亚洲丝袜av一区| 亚洲欧美日韩区| 米奇精品一区二区三区在线观看| 日本精品久久中文字幕佐佐木| 亚洲福利视频二区| 黑人巨大精品欧美一区二区| 久久av中文字幕| 97人人模人人爽人人喊中文字| 精品福利一区二区| www.国产精品一二区| 日韩电影中文字幕一区| 青草成人免费视频| 国产深夜精品福利| 欧美综合在线观看| 久久久国产在线视频| 日韩美女免费观看| 国产亚洲欧美一区| 91超碰caoporn97人人| 亚洲社区在线观看| 亚洲成人久久一区| 黄色一区二区在线观看| 中文字幕一区日韩电影| 奇米一区二区三区四区久久| 黑人巨大精品欧美一区二区| 少妇高潮久久77777| 国产99久久久欧美黑人| 国产一区二区激情| 日本不卡视频在线播放| 最近的2019中文字幕免费一页| 色妞色视频一区二区三区四区| 亚洲色图35p| 日本高清+成人网在线观看| 亚洲精品www久久久久久广东| 亚洲专区国产精品| 51色欧美片视频在线观看| 日韩在线观看av| 久久成人这里只有精品| 日韩一区二区欧美| 精品国产区一区二区三区在线观看| 伊人成人开心激情综合网| 中文字幕日韩av电影| 久久国产精品久久久久久久久久| 久久久免费在线观看| 精品久久久久久国产|