用java实现ftp上传文件

实际项目需求:从数据库查找信息,在本地生成文件,再上传到ftp

所用Jar包:NetComponents.jar

核心代码:


import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import com.oroinc.net.ftp.FTP;
import com.oroinc.net.ftp.FTPClient;
import com.oroinc.net.ftp.FTPReply;


public class FtpUtil {      
    
    
      public void connect(String ip, String port, String username,String password,String path,String filePath,String dateString){
             FTPClient ftp = new FTPClient();
             try{
                 int reply;
                 
                 ftp.connect(ip);
                 System.out.println("Connected to " + ip + ".");

                 reply = ftp.getReplyCode();

                 if (!FTPReply.isPositiveCompletion(reply))
                 {
                     ftp.disconnect();
                     throw new RuntimeException("FTP server refused connection.");
                 }
                 
                 if (!ftp.login(username, password))
                 {
                     ftp.logout();
                     throw new RuntimeException("FTP login error.");
                 }
                 
                 System.out.println("ftp系统名称 " + ftp.getSystemName());
                 
                 ftp.setFileType(FTP.BINARY_FILE_TYPE);
                 ftp.enterLocalPassiveMode();//主动模式,端口自动获取的
                 //在ftp服务器上建立文件夹,要有权限
                boolean a=  ftp.makeDirectory(path+"/"+dateString);//dateString 我们要求是以时间生成文件夹
                //转换工作空间,准备上传
                 boolean b =  ftp.changeWorkingDirectory(path+"/"+dateString);
              // ftpClient.enterLocalPassiveMode(); //被动模式
                 System.out.println("ftp就绪");
                 //获得所有文件的名字
                 File file=new File(filePath);
                 String[] files=file.list();
                 //遍历上传
                 for (int i = 0; i < files.length; i++) {
                     File f = new File(filePath+"/"+files[i]);
                     InputStream input = new FileInputStream(f);
                     System.out.println("准备传送"+files[i]);
                     //ftp.storeFile(path,input);
                     //第一个参数是将要上传到ftp服务器上的绝对路径加文件名,第二个参数是上传的文件流,也要是本地的绝对路径
                     boolean flag = ftp.storeFile(path+"/"+dateString+"/"+files[i], input);
                     System.out.println("flag============================="+flag);
                     if(flag){
                         System.out.println("传送完毕");
                     }else{
                         input.close();
                         throw new RuntimeException("传送文件失败,请检查ftp连接");
                     }
                     
                     input.close();
                 }
                 
                 System.out.println("上传完成");
                 
                 
             } catch (Exception e) {
                 e.printStackTrace();
                 throw new RuntimeException("ftp__发送数据给融合异常,请联系系统管理员");
             }finally{
                 if (ftp.isConnected())
                 {
                     try
                     {
                         ftp.logout();
                         ftp.disconnect();
                     }
                     catch (IOException f)
                     {
                          f.printStackTrace();
                          throw new RuntimeException("关闭FTP连接发生异常!", f);
                     }
                 }
             }
         }   
 
}    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值