zoukankan      html  css  js  c++  java
  • Java调用FTP实例

     1 package com.test;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileOutputStream;
     6 import java.io.IOException;
     7 import java.io.InputStream;
     8 import java.io.OutputStream;
     9 import java.net.SocketException;
    10 import java.net.UnknownHostException;
    11 
    12 import org.apache.commons.net.ftp.FTP;
    13 import org.apache.commons.net.ftp.FTPClient;
    14 import org.apache.commons.net.ftp.FTPFile;
    15 
    16 public class FtpClientTest {
    17 
    18     /**
    19      * @param args
    20      * @throws SocketException 
    21      * @throws IOException 
    22      * @throws UnknownHostException 
    23      */
    24     public static void main(String[] args) throws SocketException, IOException{
    25         // TODO Auto-generated method stub
    26         String host = "192.168.0.107" ;
    27         String user = "ftpClient" ;
    28         String pass = "ftp123" ;
    29         up(host, 21, user, pass) ;
    30     }
    31     static void load(String host ,int port ,String user ,String pass){
    32         FTPClient client =     new FTPClient() ;
    33         try {
    34             client.connect(host,port) ;
    35             boolean flag = client.login(user, pass) ;
    36             if(flag){
    37                 /**
    38                  * ASCII传输方式 假定用户正在拷贝的文件包含的简单ASCII码文本,
    39                  * 如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
    40                  * 但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件,这回导致文件损坏
    41                  */
    42                 //设置采用二进制传输方式下载,若采用默认的ascii传输方式下载可能导致文件损失
    43                 client.setFileType(FTP.BINARY_FILE_TYPE);
    44                 //切换当前目录到xx
    45                 client.changeWorkingDirectory("/20170806") ;
    46                 FTPFile[] ftpFiles = client.listFiles() ;
    47                 OutputStream out = null ;
    48                 int i = 1 ;
    49                 for(FTPFile f:ftpFiles){
    50                     File file = new File("G:/ftp/") ;
    51                     if(!file.exists())
    52                         file.mkdirs() ;
    53                     file = new File(file, new String(f.getName().getBytes("iso-8859-1"),"GBK")) ;
    54                     out = new FileOutputStream(file) ;
    55                     client.retrieveFile(f.getName(), out) ;
    56                     out.close() ;
    57                     i++ ;
    58                 }
    59             }
    60         } catch (SocketException e) {
    61             // TODO Auto-generated catch block
    62             e.printStackTrace();
    63         } catch (IOException e) {
    64             // TODO Auto-generated catch block
    65             e.printStackTrace();
    66         }
    67     } 
    68     static void up(String host ,int port ,String user ,String pass){
    69         FTPClient client =     new FTPClient() ;
    70         try {
    71             client.connect(host,port) ;
    72             boolean flag = client.login(user, pass) ;
    73             if(flag){
    74                 client.setFileType(FTP.BINARY_FILE_TYPE);
    75                 //切换工作目录
    76                 client.changeWorkingDirectory("/20170806") ;
    77                 InputStream in = new FileInputStream("E:/周报/个人周报.xlsx") ;
    78                 client.storeFile("1234.xlsx", in) ;
    79             }
    80         } catch (SocketException e) {
    81             // TODO Auto-generated catch block
    82             e.printStackTrace();
    83         } catch (IOException e) {
    84             // TODO Auto-generated catch block
    85             e.printStackTrace();
    86         }
    87     }
    88 }
  • 相关阅读:
    PAT Basic 1023 组个最小数 (20 分)
    PAT Advanced 1048 Find Coins (25 分)
    PAT Basic 1005 继续(3n+1)猜想 (25 分)
    PAT Advanced 1050 String Subtraction (20 分)
    PAT Advanced 1041 Be Unique (20 分)
    PAT Basic 1047 编程团体赛 (20 分)
    SpringSecurity整合SpringBoot
    给正在运行的Docker容器动态绑定卷组
    linux 中格式化json字符串
    docker/kubernetes国内源/镜像源解决方式
  • 原文地址:https://www.cnblogs.com/hfblogs/p/7381988.html
Copyright © 2011-2022 走看看