俊星的BLOG

          Ftp客戶端簡單編程

          基于APACHE COMMONS中的NET包提供的FTP客戶端類庫實現,下面是具體的代碼:

          package test;

          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 ClientTest {
              
          public static void main(String[] args) {
                  ClientTest main 
          = new ClientTest();
                  FTPClient ftp 
          = new FTPClient();
                  
          // 設置一個監聽
                  ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
                  
          try {
                      ftp.connect(
          "localhost"2121);
                      
          int reply = ftp.getReplyCode();
                      
          if (!FTPReply.isPositiveCompletion(reply)) {
                          ftp.disconnect();
                          System.out.println(
          "FTP server refused connection");
                      }

                      
          // 登錄
                      ftp.login("admin""admin");
                      main.uploadFile(ftp);
                      main.listFiles(ftp);
                      main.downloadFile(ftp);
                      main.deleteFile(ftp);
                      main.listFiles(ftp);
                      
          // 退出
                      ftp.logout();
                  }
           catch (IOException e) {
                      e.printStackTrace();
                      
          if (ftp.isConnected()) {
                          
          try {
                              ftp.disconnect();
                          }
           catch (Exception e2) {
                          }

                      }

                  }

              }

              
              
          // 列舉文件
              private void listFiles(FTPClient ftp) throws IOException {
                  System.out.println(
          "------------START------------");
                  
          for (FTPFile f : ftp.listFiles()) {
                      System.out.println(f.getName() 
          + " " + f.getSize());
                  }

                  System.out.println(
          "------------END------------");
              }


              
          // 上傳文件
              private void uploadFile(FTPClient ftp) throws IOException {
                  ftp.setFileType(FTP.BINARY_FILE_TYPE);
                  ftp.enterLocalPassiveMode();
                  InputStream input 
          = new FileInputStream("res/conf/dushu.jpg");
                  ftp.storeFile(
          "dushu.jpg", input);
                  input.close();
              }


              
          // 下載文件
              private void downloadFile(FTPClient ftp) throws IOException {
                  ftp.setFileType(FTP.BINARY_FILE_TYPE);
                  ftp.enterLocalPassiveMode();
                  OutputStream output 
          = new FileOutputStream("res/conf/dushu_down.jpg");
                  ftp.retrieveFile(
          "dushu.jpg", output);
                  output.close();
              }


              
          // 刪除文件
              private void deleteFile(FTPClient ftp) throws IOException {
                  ftp.deleteFile(
          "dushu.jpg");
              }

          }


          輸出如下:
          220 Service ready for new user.
          USER admin
          331 User name okay, need password for admin.
          PASS admin
          230 User logged in, proceed.
          TYPE I
          200 Command TYPE okay.
          PASV
          227 Entering Passive Mode (127,0,0,1,13,12)
          STOR dushu.jpg
          150 File status okay; about to open data connection.
          226 Transfer complete.
          ------------START------------
          SYST
          215 UNIX Type: Apache FtpServer
          PASV
          227 Entering Passive Mode (127,0,0,1,13,14)
          LIST
          150 File status okay; about to open data connection.
          226 Closing data connection.
          dushu.jpg 
          83694
          ------------END------------
          TYPE I
          200 Command TYPE okay.
          PASV
          227 Entering Passive Mode (127,0,0,1,13,16)
          RETR dushu.jpg
          150 File status okay; about to open data connection.
          226 Transfer complete.
          DELE dushu.jpg
          250 Requested file action okay, deleted /dushu.jpg.
          ------------START------------
          PASV
          227 Entering Passive Mode (127,0,0,1,13,18)
          LIST
          150 File status okay; about to open data connection.
          226 Closing data connection.
          ------------END------------
          QUIT
          221 Goodbye.

          最后,提供一張自己拍的讀書圖:

          posted on 2010-10-12 15:37 俊星 閱讀(1028) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 青龙| 佛冈县| 浪卡子县| 巴彦淖尔市| 富川| 荆门市| 保康县| 牟定县| 宜兴市| 噶尔县| 东山县| 鄂州市| 眉山市| 平凉市| 兴和县| 巴彦淖尔市| 义乌市| 郓城县| 南靖县| 伊春市| 赤城县| 天镇县| 阜平县| 墨玉县| 绵竹市| 湛江市| 喀喇沁旗| 留坝县| 奉新县| 长治市| 大埔县| 定州市| 景德镇市| 六枝特区| 乐平市| 沁阳市| 石嘴山市| 泊头市| 清河县| 长春市| 嘉定区|