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

首頁 > 編程 > Java > 正文

java編寫ftp下載工具

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

需要用到 java 寫一個 ftp 的工具,因為只有一點點 java 基礎,但是由于好幾年不用,幾乎算是不會了,只好一點點來搞,還好能撿起來。

不過因為是在 Linux 下使用 javac 編譯,不是在 WIN 下使用 IDE 來做這些事情,所以在運行和編譯上又費了一些時間,不過正是因為這樣對 JAVA 的一些編譯、運行的知識又了解了一些。

對于 ftp 下載工具,代碼如下:

復制代碼 代碼如下:

import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.net.SocketException;  
import org.apache.commons.net.ftp.FTPClient;  
import org.apache.commons.net.ftp.FTPReply;  
public class FtpClient {
    private String         host;  
    private int            port;  
    private String         username;  
    private String         password;  
    private boolean        binaryTransfer = true;  
    private boolean        passiveMode    = true;  
    private String         encoding       = "UTF-8";  
    private int            clientTimeout  = 3000;  
    private boolean flag=true;
    private FTPClient ftpClient = null;
    public String getHost() {  
        return host;  
    }  
    public void setHost(String host) {  
        this.host = host;  
    }  
    public int getPort() {  
        return port;  
    }  
    public void setPort(int port) {  
        this.port = port;  
    }  
    public String getUsername() {  
        return username;  
    }  
    public void setUsername(String username) {  
        this.username = username;  
    }  
    public String getPassword() {  
        return password;  
    }  
    public void setPassword(String password) {  
        this.password = password;  
    }  
    public boolean isBinaryTransfer() {  
        return binaryTransfer;  
    }  
    public void setBinaryTransfer(boolean binaryTransfer) {  
        this.binaryTransfer = binaryTransfer;  
    }  
    public boolean isPassiveMode() {  
        return passiveMode;  
    }  
    public void setPassiveMode(boolean passiveMode) {  
        this.passiveMode = passiveMode;  
    }  
    public String getEncoding() {  
        return encoding;  
    }  
    public void setEncoding(String encoding) {  
        this.encoding = encoding;  
    }  
    public int getClientTimeout() {  
        return clientTimeout;  
    }  
    public void setClientTimeout(int clientTimeout) {  
        this.clientTimeout = clientTimeout;  
    }  
    public FtpClient(String Host) {
        this.username = "anonymous";
        this.encoding = "utf-8";
        this.binaryTransfer = true;
        this.binaryTransfer = true;
        this.port = 21;
        this.host = Host;
        try {
            this.ftpClient = getFTPClient();
        } catch (Exception e) {
            System.out.println("Create FTPClient error!");
        }
    }
    private FTPClient getFTPClient() throws IOException {  
        FTPClient ftpClient = new FTPClient();
        ftpClient.setControlEncoding(encoding);
        connect(ftpClient);
        if (passiveMode) {  
            ftpClient.enterLocalPassiveMode();  
        }  
        setFileType(ftpClient);
        try {  
            ftpClient.setSoTimeout(clientTimeout);  
        } catch (SocketException e) {  
            throw new IOException("Set timeout error.", e);  
        }  
        return ftpClient;  
    }  
    private void setFileType(FTPClient ftpClient) throws IOException {  
        try {  
            if (binaryTransfer) {  
                ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);  
            } else {  
                ftpClient.setFileType(FTPClient.ASCII_FILE_TYPE);  
            }  
        } catch (IOException e) {  
            throw new IOException("Could not to set file type.", e);  
        }  
    }  
    public boolean connect(FTPClient ftpClient) throws IOException {  
        try {  
            ftpClient.connect(host, port);  
            int reply = ftpClient.getReplyCode();  
            if (FTPReply.isPositiveCompletion(reply)) {  
                if (ftpClient.login(username, password)) {  
                    setFileType(ftpClient);  
                    return true;  
                }  
            } else {  
                this.ftpClient.disconnect();  
                throw new IOException("FTP server refused connection.");  
            }  
        } catch (IOException e) {  
            if (this.ftpClient.isConnected()) {  
                try {  
                    this.ftpClient.disconnect();
                } catch (IOException e1) {  
                    throw new IOException("Could not disconnect from server.", e);  
                }  
            }  
            throw new IOException("Could not connect to server.", e);  
        }  
        return false;  
    }  
    private void disconnect() throws IOException {  
        try {  
            this.ftpClient.logout();  
        } catch (IOException e) {  
            System.out.println("logout may timeout!");
        } finally {
            if (this.ftpClient.isConnected()) {  
                this.ftpClient.disconnect();  
            }  
        } 
    }  
    public InputStream getStream(String serverFile) throws IOException {
        InputStream inStream = null;
        try {
            inStream = this.ftpClient.retrieveFileStream(serverFile);
            System.out.println("inStream get over!");
            return inStream;
        } catch (IOException e) {
            System.out.println("get stream exception");
            return null;
        }
    }
    public boolean writeStream(InputStream input, String localFile) throws IOException {
        FileOutputStream fout = new FileOutputStream(localFile);
        int ch = 0;
        if(input == null){
            System.out.println("input is null");
            return false;
        }
        try {
            ch = input.read();
            while(ch != -1){
                fout.write(ch);
                ch = input.read();
            }
            System.out.println("write over!");
            return flag;
        } catch (IOException e) {
            throw new IOException("Couldn't get file from server.", e);
        }
    }
    public boolean isExist(String remoteFilePath)throws IOException{
        try{
            File file=new File(remoteFilePath);
            String remotePath=remoteFilePath.substring(0,(remoteFilePath.indexOf(file.getName())-1));
            String[] listNames = this.ftpClient.listNames(remotePath);  
            System.out.println(remoteFilePath);
            for(int i=0;i<listNames.length;i++){
                System.out.println(listNames[i]);
                if(remoteFilePath.equals(listNames[i])){
                    flag=true;
                    System.out.println("file:"+file.getName()+" existed");
                    break;
                }else {
                    flag=false;
                }
            }
        } catch (IOException e) {  
            throw new IOException("FILE EXCEPTION", e);  
        }
        return flag;
    }
    //main for testing
    public static void main(String[] args) throws IOException {  
        String hostname = "cp01-testing-ps7130.cp01.baidu.com";
        String serverFile="/home/work/check_disk.sh";
        String localFile="/home/work/workspace/project/dhc2-0/dhc/base/ftp/task_get";
        FtpClient ftp = new FtpClient(hostname);  
        System.out.println(ftp.isExist(serverFile));
        ftp.writeStream(ftp.getStream(serverFile), localFile);
        ftp.disconnect();
    }  
}

這個工具是為了配合另外一個 Hadoop 工具做 集群上傳用的,所以里面的把 input 和 output 流分開了,也是為了方便另外一個工具使用。

補充一點,如何在 linux 配置運行:

如果這樣的代碼需要在 linux 下環境運行,首先要配置好響應的包,例如

復制代碼 代碼如下:

import org.apache.commons.net.ftp.FTPClient;

這個包在 apache 的網站上直接下載就行,解壓后找到對應的 jar 包,在編譯的時候進行引用:

復制代碼 代碼如下:

export FTPPATH="${路徑}/xxx.jar"
javac -classpath $CLASSPATH:$FTPPATH FtpClient.java

同樣,在運行的時候也要指定 classpath:

復制代碼 代碼如下:

java -classpath $CLASSPATH:$FTPPATH FtpClient

建議不要把$FTPPATH 包含在 CLASSPATH 中,用什么包就引用什么環境變量就行了,沒必要一股腦都添加進去,就像我們沒必要 import 所有的包一樣。

以上所述就是本文的全部內容了,希望能夠對大家學習java有所幫助。

請您花一點時間將文章分享給您的朋友或者留下評論。我們將會由衷感謝您的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女免费视频| 日韩欧中文字幕| 亚洲精品99久久久久中文字幕| 亚洲精品免费在线视频| 动漫精品一区二区| 97超级碰在线看视频免费在线看| 精品国内自产拍在线观看| 国内精品久久久久久中文字幕| 韩国福利视频一区| 一区二区三区动漫| 日韩成人激情视频| 欧美高清一级大片| 欧美亚洲激情在线| 久久精品视频中文字幕| 国产999精品久久久| 国产视频一区在线| 色综合伊人色综合网| 久久成人一区二区| 亚洲色图av在线| 欧美另类高清videos| 亚洲综合在线做性| 国内精品久久久久影院 日本资源| 欧美精品久久久久久久久| 国产精品久久999| 欧美电影在线观看完整版| 日韩中文字在线| 亚洲欧美国产一区二区三区| 国产亚洲欧洲高清一区| 久久精品影视伊人网| 亚洲欧洲日本专区| 狠狠干狠狠久久| 午夜精品一区二区三区在线视| 久久精品国产一区二区三区| 伊人久久久久久久久久久| 亚洲女人被黑人巨大进入| 欧美高清自拍一区| 在线视频免费一区二区| 国产不卡一区二区在线播放| 国产一区二区色| 国产精品视频成人| 欧美一级片在线播放| 精品国产一区二区三区四区在线观看| 丝袜美腿亚洲一区二区| 欧美性生活大片免费观看网址| 18一19gay欧美视频网站| 亚洲综合第一页| 国自在线精品视频| 国产精品青草久久久久福利99| 日韩色av导航| 国产精品日韩精品| 国产欧美欧洲在线观看| 精品国产乱码久久久久久婷婷| 欧美成人精品在线播放| 欧洲中文字幕国产精品| 国产精品一区二区3区| 69av视频在线播放| 国产91在线高潮白浆在线观看| 国产成人激情视频| 欧美高清在线播放| 日韩av片免费在线观看| 日韩av第一页| 国产精品久久久久久久久久新婚| 国产亚洲欧洲高清一区| 亚洲国产精品999| 成人在线国产精品| 国产成人高清激情视频在线观看| 欧美精品久久久久久久久久| 96sao精品视频在线观看| 成人a级免费视频| 中文字幕亚洲色图| 精品成人av一区| 欧美成人亚洲成人| 亚洲国产精品悠悠久久琪琪| 欧美成人性生活| 亚洲国产精品999| 久久影院资源站| 欧美日韩午夜剧场| 国产精品老女人精品视频| 欧美最近摘花xxxx摘花| 欧美视频一区二区三区…| 欧洲亚洲免费在线| 亚洲国产精品成人精品| 亚洲天堂影视av| 欧美精品激情在线| 中国日韩欧美久久久久久久久| 欧美精品性视频| 精品电影在线观看| 一区二区三区回区在观看免费视频| 91在线高清视频| 免费不卡在线观看av| 国产精品日韩在线观看| 亚洲精品国产精品久久清纯直播| 亚洲人在线观看| 日韩精品欧美国产精品忘忧草| 中文字幕欧美日韩精品| 久久精品99国产精品酒店日本| 亚洲欧美日韩国产精品| 91精品国产免费久久久久久| 久久精品国产一区二区三区| 国产精品视频播放| 欧美精品videossex88| 国产欧美亚洲视频| 成人做爽爽免费视频| 成人国产精品久久久久久亚洲| 午夜精品久久久久久久99黑人| 奇米成人av国产一区二区三区| 久久久久久久av| 欧美激情在线播放| 91精品久久久久久久久久另类| 日韩精品中文字幕在线| 亚洲国内精品视频| 国产欧美婷婷中文| 亚洲一区二区在线| 国产一区私人高清影院| 亚洲国产精品久久精品怡红院| 精品国产一区二区三区四区在线观看| 中文字幕一精品亚洲无线一区| 国产精品影院在线观看| 日韩av免费观影| 国产一区二区三区在线播放免费观看| 久久精品91久久久久久再现| 精品国偷自产在线| 成人激情视频网| 九色精品美女在线| 欧美在线视频观看免费网站| 亚洲国产女人aaa毛片在线| 日韩欧美国产一区二区| 国产亚洲视频在线观看| 欧美成人免费va影院高清| 国产精品欧美一区二区| 91久久国产婷婷一区二区| 国产精品影片在线观看| 国产精品劲爆视频| 欧美与欧洲交xxxx免费观看| 欧美日韩亚洲国产一区| 欧美日韩国产区| 亚洲区中文字幕| 亚洲天堂成人在线视频| 久久天天躁狠狠躁夜夜躁2014| 欧美性xxxxxx| 欧美在线观看日本一区| 亚洲香蕉在线观看| 亚洲视频精品在线| 国产中文字幕91| 日韩中文字幕在线免费观看| 日韩av电影手机在线| 北条麻妃一区二区三区中文字幕| 欧美超级免费视 在线| 国产一区二区欧美日韩| 国产va免费精品高清在线观看| 77777少妇光屁股久久一区| 色综合老司机第九色激情| 国产在线观看精品一区二区三区| 中文字幕日韩欧美| 久久久久久久成人| 亚洲精品国产精品国自产在线| 伊是香蕉大人久久| 亚洲一区久久久| 欧美放荡办公室videos4k| 国产精品扒开腿做爽爽爽视频| 丁香五六月婷婷久久激情| www.亚洲一区| 国产精自产拍久久久久久| 精品电影在线观看|