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

首頁 > 學院 > 開發設計 > 正文

JDK1.7 ftpclient的方法示例

2019-11-06 05:26:53
字體:
來源:轉載
供稿:網友

程序升級JDK7發現ftp下載存在與JDK6不兼容的問題,看了下網上的示例,沒有找到API接口文檔,自己憑借不是很好的英文看了下接口API,

提供一下示例,有問題請指出

package com.util;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.net.InetSocketAddress;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.commons.lang.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.aspectj.util.FileUtil;import sun.net.TelnetInputStream;import sun.net.TelnetOutputStream;import sun.net.ftp.FtpClient;import sun.net.ftp.FtpClient.TransferType;import sun.net.ftp.FtpPRotocolException;public class FtpUtilsJDK7 {private static Log log = LogFactory.getLog(FtpUtils.class);public FtpClient ftpClient = null;/*** connectServer 連接ftp服務器* * @throws java.io.IOException* @param path* 文件夾,空代表根目錄* @param passWord* 密碼* @param user* 登陸用戶* @param server* 服務器地址* @throws FtpProtocolException */public void connectServer(String server, int port, String user, String password, String path) throws IOException, FtpProtocolException {this.connectServer(server, port, user, password, path, null);}/*** connectServer 連接ftp服務器* * @param server* @param path* 文件夾,空代表根目錄* @param password* 密碼* @param user* 登陸用戶* @param server* 服務器地址* @param send* @throws IOException* @throws FtpProtocolException */public void connectServer(String server, int port, String user, String password, String path, String send) throws IOException, FtpProtocolException {// server:FTP服務器的ip地址;user:登錄FTP服務器的用戶名// password:登錄FTP服務器的用戶名的口令;path:FTP服務器上的路徑ftpClient =FtpClient.create();if(port == -1) {ftpClient.connect(new InetSocketAddress(server, port));} else {ftpClient.connect(new InetSocketAddress(server, port));}ftpClient.login(user, password.toCharArray());// path是ftp服務下主目錄的子目錄if(path.length() != 0)// ftpClient.cd(path);ftpClient.changeDirectory(path);// 用2進制上傳、下載ftpClient.setBinaryType();// if(StringUtils.isNotEmpty(send)) {// ftpClient.sendServer(send);// }}/*** upload 上傳文件* * @throws java.lang.Exception* @return -1 文件不存在 -2 文件內容為空 >0 成功上傳,返回文件的大小* @param newname* 上傳后的新文件名* @param filename* 上傳的文件*/public long upload(String filename, String newname) throws Exception {long result = 0;TelnetOutputStream os = null;FileInputStream is = null;try {java.io.File file_in = new java.io.File(filename);if(!file_in.exists())return -1;if(file_in.length() == 0)return -2;// os = ftpClient.putFileStream(newname);os = (TelnetOutputStream) ftpClient.putFileStream(newname, true);result = file_in.length();is = new FileInputStream(file_in);byte[] bytes = new byte[1024];int c;while ((c = is.read(bytes)) != -1) {os.write(bytes, 0, c);}} finally {if(is != null) {is.close();}if(os != null) {os.close();}}return result;}/*** upload* * @throws java.lang.Exception* @return* @param filename*/public long upload(String filename) throws Exception {String newname = "";if(filename.indexOf("/") > -1) {newname = filename.substring(filename.lastIndexOf("/") + 1);} else {newname = filename;}return upload(filename, newname);}/*** download 從ftp下載文件到本地* * @throws java.lang.Exception* @return* @param newfilename* 本地生成的文件名* @param filename* 服務器上的文件名*/public long download(String filename, String newfilename) throws Exception {long result = 0;TelnetInputStream is = null;FileOutputStream os = null;try {// is = ftpClient.get(filename);is = (TelnetInputStream) ftpClient.getFileStream(filename); java.io.File outfile = new java.io.File(newfilename);os = new FileOutputStream(outfile);byte[] bytes = new byte[1024];int c;while ((c = is.read(bytes)) != -1) {os.write(bytes, 0, c);result = result + c;}} catch (IOException e) {} finally {if(is != null) {is.close();}if(os != null) {os.close();}}return result;}/*** 重命名文件名稱* * @param oldName* @param newName* @return*/public boolean rename(String oldName, String newName) {boolean isSuccess = false;try {ftpClient.rename(oldName, newName);isSuccess = true;} catch (IOException e) {}catch (FtpProtocolException e) {}return isSuccess;}/*** 取得某個目錄下的所有文件列表,包括文件夾;* * @param path* @return*/public List getFileList(String path) {List list = new ArrayList();try {DataInputStream dis = new DataInputStream(ftpClient.nameList(path));String filename = "";while ((filename = dis.readLine()) != null) {list.add(filename);}} catch (Exception e) {}return list;}public boolean isExistsFile(String path, String file) {List<String> fileList = this.getFileList(path);if(fileList != null && fileList.size() > 0) {for(String f : fileList) {if(f.equals(file)) {return true;}}}return false;}/*** closeServer 斷開與ftp服務器的鏈接* * @throws java.io.IOException*/public void closeServer() throws IOException {try {if(ftpClient != null) {ftpClient.close(); }} catch (IOException e) {}}public boolean isFile(String fileName) {// boolean isFile = false;// TelnetInputStream oTelnetInputStream = null;// try {// oTelnetInputStream = ftpClient.get(fileName);// byte[] bytes = new byte[1024];// int c = -1;// if ((c = oTelnetInputStream.read(bytes)) != -1) {// isFile = true;// }// } catch (java.io.FileNotFoundException fe) {// } catch (IOException ioe) {// io// } catch (Exception e) {// }// finally {// if (oTelnetInputStream != null) {// try {// oTelnetInputStream.close();// } catch (IOException e) {// // }// }// }// return isFile;return !isDir(fileName);}public boolean isDir(String fileName) {boolean isDir = false;TelnetInputStream oTelnetInputStream = null;String strPath = null;try {// strPath = ftpClient.pwd();strPath =ftpClient.getWorkingDirectory();ftpClient.changeDirectory(fileName);ftpClient.changeToParentDirectory();// ftpClient.cdUp();isDir = true;} catch (Exception e) {log.error("獲取文件出錯,文件名:" + fileName);log.error("獲取文件出錯,原因為:" + e.getMessage(), e);} finally {if(strPath != null) {try {ftpClient.changeDirectory(strPath);} catch (Exception e) {}}}return isDir;}public void cd(String path) throws Exception {ftpClient.changeDirectory(path);}/*** upload 上傳文件* * @throws java.lang.Exception* @return -1 文件不存在 -2 文件內容為空 >0 成功上傳,返回文件的大小* @param newname* 上傳后的新文件名* @param filename* 上傳的文件*/public long uploadObyteFile(String filename, String newname) throws Exception {long result = 0;TelnetOutputStream os = null;FileInputStream is = null;try {java.io.File file_in = new java.io.File(filename);if(!file_in.exists())return -1;// os = ftpClient.putFileStream(newname);os = (TelnetOutputStream) ftpClient.putFileStream(newname, true);result = file_in.length();is = new FileInputStream(file_in);byte[] bytes = new byte[1024];int c;while ((c = is.read(bytes)) != -1) {os.write(bytes, 0, c);}} finally {if(is != null) {is.close();}if(os != null) {os.close();}}return result;}public void mkdir(String path, String dir) throws Exception {//切換到文件夾下ftpClient.changeDirectory(path);//創建遠程文件夾if(dir.contains("/")) {String[] dirArray = dir.split("/");for(String d : dirArray) {if(d != null && !"".equals(d)) {ftpClient.makeDirectory(dir);// ftpClient.sendServer("mkdir " + dir + "/r/n");// ftpClient.siteCmd("mkdir " + dir + "/r/n");ftpClient.changeDirectory(d);}}}// 這個方法必須在 這兩個方法中間調用 否則 命令不管用ftpClient.setBinaryType();ftpClient.getLastResponseString();// ftpClient.readServerResponse();}public void rmdir(String path, String dir) throws Exception {//切換到文件夾下ftpClient.changeDirectory(path);//創建遠程文件夾ftpClient.removeDirectory(dir);// ftpClient.sendServer("rm -rf " + dir + "/r/n");// 這個方法必須在 這兩個方法中間調用 否則 命令不管用ftpClient.setBinaryType();ftpClient.getLastResponseString();// ftpClient.readServerResponse();}/*** 設置傳輸協議類型,如被動傳輸模式:"quote PASV"* 主動模式需要客戶端必須開放端口給服務器,很多客戶端都是在防火墻內,開放端口給FTP服務器訪問比較困難。* 被動模式只需要服務器端開放端口給客戶端連接就行了。* @param transferProtocolType* @throws IOException * @throws FtpProtocolException */public void setTransferProtocolType(String transferProtocolType) throws FtpProtocolException, IOException {ftpClient.enablePassiveMode(true);// this.ftpClient.sendServer(transferProtocolType);}/*** @param file 提交的文件* @param basePath 文件所在的本地路徑 上傳成功時會刪除本地文件* @param fileName 上傳文件的文件名稱* @param remotePath 服務器文件的地址*/public void uploadFile(File file,String basePath,String fileName,String remotePath) throws Exception{ScpUtil scpUtil = new ScpUtil();try {if(file==null)throw new FileNotFoundException("文件未找到");File newFile = new File(basePath + fileName);FileUtil.copyValidFiles(file, newFile);file.delete();Map<String, String> remoteMap = PropertiesUtil.getParameterMap(160225);String remoteIp = remoteMap.get("ip");String remoteUsername = remoteMap.get("username"); String remotePassword = remoteMap.get("password");Integer remotePort = Integer.parseInt(remoteMap.get("port"));int connectResult = scpUtil.connectServer(remoteIp, remotePort, remoteUsername, remotePassword);if(connectResult != 200) {throw new Exception("連接遠程服務器失敗");}int uploadResult = scpUtil.uploadFile(basePath, fileName, remotePath, false);if(uploadResult != 200){throw new Exception("文件上傳失敗");}newFile.delete();} catch (FileNotFoundException e) {throw new Exception("文件未找到", e);} catch (Exception e) {throw new Exception(e.getMessage(), e);} finally {if(scpUtil != null)scpUtil.closeServer();}}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美国产日韩天堂区| 国产精品亚洲片夜色在线| 亚洲va码欧洲m码| 亚洲va久久久噜噜噜久久天堂| 日本国产高清不卡| 欧美一级视频在线观看| 亚洲国产三级网| 久热精品视频在线观看一区| 中文字幕av一区二区| 6080yy精品一区二区三区| 亚洲国产日韩精品在线| 欧美精品激情在线| 亚洲国产精品大全| 欧美日韩视频免费播放| 欧美黑人又粗大| 欧美电影在线观看| 2018中文字幕一区二区三区| 欧美成人高清视频| 国产一区二区三区精品久久久| 成人在线小视频| 亚洲高清色综合| 91亚洲精品久久久| 深夜福利亚洲导航| 欧美大人香蕉在线| 97超碰蝌蚪网人人做人人爽| 成人av在线网址| 亚洲一二在线观看| 国产亚洲精品久久久久久| 久久久久久久国产| 久久成年人免费电影| 欧美午夜激情小视频| 亚洲一区二区三区视频| 欧美做受高潮电影o| 亚洲bt欧美bt日本bt| 91精品国产综合久久香蕉的用户体验| 精品国内自产拍在线观看| 国产精品久久久久久久美男| 久久成人在线视频| 亚洲午夜未满十八勿入免费观看全集| 日本精品免费观看| 久久999免费视频| 91美女片黄在线观| 欧美成人一区二区三区电影| 欧美电影免费观看大全| 久久99精品国产99久久6尤物| 欧美极品xxxx| 亚洲高清一二三区| 日韩av一区二区在线观看| 粗暴蹂躏中文一区二区三区| 成人av色在线观看| 136fldh精品导航福利| 欧美高清视频一区二区| 97超级碰在线看视频免费在线看| 2019最新中文字幕| 九九视频这里只有精品| 91久久久久久久久| 亚洲精品视频播放| 欧美乱妇高清无乱码| 国产精彩精品视频| 欧美午夜无遮挡| 亚洲精品日韩欧美| 国产视频精品一区二区三区| 欧美—级a级欧美特级ar全黄| 成人妇女淫片aaaa视频| 国语自产在线不卡| 欧美性极品xxxx娇小| 国产美女被下药99| 亚洲一区二区中文字幕| 色噜噜狠狠狠综合曰曰曰88av| 欧美成aaa人片免费看| 国产午夜精品免费一区二区三区| 日韩美女写真福利在线观看| 久久香蕉频线观| 亚州欧美日韩中文视频| 激情av一区二区| 欧美性极品xxxx做受| 欧美大奶子在线| 欧美高清第一页| 亚洲人成电影在线| 欧美激情亚洲自拍| 久久久www成人免费精品| 精品毛片网大全| 久久久天堂国产精品女人| 亚洲少妇激情视频| 国产精品成人播放| 国产91精品青草社区| xvideos国产精品| 日韩av一卡二卡| 日韩欧美中文字幕在线播放| 精品成人乱色一区二区| 国产精品高潮呻吟久久av黑人| 在线不卡国产精品| 日韩在线观看免费全集电视剧网站| 在线播放国产一区二区三区| 色噜噜狠狠狠综合曰曰曰88av| 日韩电影免费观看在线观看| 国产日产欧美a一级在线| 国产在线观看91精品一区| 欧洲亚洲免费视频| 亚洲日本欧美日韩高观看| 色偷偷av一区二区三区| 97国产在线视频| 欧美大片在线看| 国产成人一区二区三区电影| 中文字幕精品影院| 亚洲人午夜精品| 日韩av手机在线看| 久久大大胆人体| 国产欧美日韩免费| 欧美寡妇偷汉性猛交| www.亚洲男人天堂| 欧美成人精品一区二区三区| 欧美视频在线观看免费网址| 欧美午夜精品久久久久久人妖| 日本视频久久久| 久久久久久久久久久国产| 国产精国产精品| 精品国偷自产在线| 欧美在线视频导航| 夜夜嗨av一区二区三区免费区| 亚洲深夜福利网站| 欧美激情影音先锋| 亚洲人成电影网站色www| 国产va免费精品高清在线观看| 亚洲女人天堂视频| 亚洲女人被黑人巨大进入| 亚洲伦理中文字幕| 69视频在线播放| 亚洲国产一区自拍| 91成人福利在线| 欧美成人午夜激情| 亚洲第一区中文99精品| 欧美日韩国产一区二区三区| 国产一区二区三区免费视频| 国产精品综合网站| 国产成人精品视频在线| 久久精品视频中文字幕| 91久久国产精品91久久性色| 中国china体内裑精亚洲片| 国产精品丝袜久久久久久不卡| 久久综合久久88| 成人网在线观看| 欧美自拍大量在线观看| 亚洲精品日韩激情在线电影| 亚洲欧洲在线播放| 精品久久久久久久久中文字幕| 欧美成人全部免费| 欧亚精品在线观看| 国产精品丝袜白浆摸在线| 欧美一级淫片丝袜脚交| 96精品视频在线| 久久99热精品| 久久国产精品电影| 色偷偷91综合久久噜噜| 亚洲欧洲一区二区三区久久| 久久躁日日躁aaaaxxxx| 国产在线精品播放| 久久69精品久久久久久国产越南| 欧美激情一区二区三区久久久| 国产亚洲欧美一区| 国产91精品高潮白浆喷水| 成人国产精品色哟哟| 91理论片午午论夜理片久久| 亚洲美女av黄|