江城离影 2022-04-14 16:35 采纳率: 40%
浏览 16
已结题

平台每日统计全省各地市区县的纳管设备数量,并将统计结果以文件形式,上传至固定的FTP服务器

##问题
从数据库获取数据,按文件规范写入txt,上传到固定的ftp服务器

  • 写回答

1条回答 默认 最新

  • 燕_青 2022-04-14 16:42
    关注

    查询数据,生产TXT文件的就不提了,上传至ftp的可以看下这个
    private FTPClient ftp;
    /**
    *
    * @param path 上传到ftp服务器哪个路径下
    * @param addr 地址
    * @param port 端口号
    * @param username 用户名
    * @param password 密码
    * @return
    * @throws Exception
    */
    private boolean connect(String path,String addr,int port,String username,String password) throws Exception {
    boolean result = false;
    ftp = new FTPClient();
    int reply;
    ftp.connect(addr,port);
    ftp.login(username,password);
    ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
    reply = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    return result;
    }
    ftp.changeWorkingDirectory(path);
    result = true;
    return result;
    }

    /**  
     * @author   
     * @class  ItemFtp  
     * @title  upload  
     * @Description :   
     * @time 2013 2013-11-27  
     * @return void  
     * @exception :(Error note)  
     * @param file 上传的文件或文件夹  
     * @param path 上传的文件的路径   
     * @throws Exception  
     */  
    private void upload(File file , String path) throws Exception{     
          
        System.out.println( " file.isDirectory() : " + file.isDirectory()  );  
          
        if(file.isDirectory()){             
            ftp.makeDirectory(file.getName());                  
            ftp.changeWorkingDirectory(file.getName());        
            String[] files = file.list();               
            for (int i = 0; i < files.length; i++) {        
                File file1 = new File(file.getPath()+"\\"+files[i] );        
                if(file1.isDirectory()){        
                    upload(file1 , path );   
                    ftp.changeToParentDirectory();     
                    
                }else{                      
                    File file2 = new File(file.getPath()+"\\"+files[i]);        
                    FileInputStream input = new FileInputStream(file2);     
                    ftp.storeFile(file2.getName(), input);   
                    
                    input.close();                              
                }                   
            }        
        }else{        
            File file2 = new File(file.getPath());      
              
            System.out.println( " file.getPath() : " + file.getPath()  + " | file2.getName() : " + file2.getName() );  
              
            InputStream input = new FileInputStream(file2);     
               
            ftp.changeWorkingDirectory(path);     
            ftp.storeFile(file2.getName(), input);        
            FTPFile[] ftpfiles = ftp.listFiles();
            System.err.println("ftp文件"+ftpfiles.length);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            for(FTPFile f:ftpfiles){
                if(!f.isDirectory()){
                    String time = sdf.format(new Date(f.getTimestamp().getTimeInMillis()+8*60*60*1000));
                    System.out.println("文件:"+f.getName()+"的上传时间:"+time);
                }
            }
            input.close();  //关闭输入流  
            ftp.logout();  //退出连接  
        }        
    }    
    
    /**  
     * @author   
     * @class  ItemFtp  
     * @title  download  
     * @Description : FPT 下载文件方法  
     * @time 2013 2013-11-27  
     * @return void  
     * @exception :(Error note)  
     * @param reomvepath 下载的文件的路径   
     * @param fileName  下载的文件名   
     * @param localPath 下载的文件本地路径  
     * @throws Exception  
     */  
    private void download(String reomvepath , String fileName , String localPath  ) throws Exception{     
               
            ftp.changeWorkingDirectory(reomvepath);    
              
         // 列出该目录下所有文件  
            FTPFile[] fs = ftp.listFiles();  
            // 遍历所有文件,找到指定的文件  
            for (FTPFile ff : fs) {  
                 if (ff.getName().equals(fileName)) {  
                  // 根据绝对路径初始化文件  
                  File localFile = new File(localPath + "/" + ff.getName());  
                  // 输出流  
                  OutputStream is = new FileOutputStream(localFile);  
                  // 下载文件  
                  ftp.retrieveFile(ff.getName(), is);  
                  System.out.println("下载成功!");  
                  is.close();    
                 }  
            }  
              
            ftp.logout();  //退出连接  
              
    }   
    
    public static void main(String[] args) throws Exception{      
        
        FtpTest t = new FtpTest();      
         
        boolean lianjie = t.connect("/upload", "IP", 21, "ftp用户名", "密码");      
       System.out.println( "连接 :" + lianjie  );  
         
       //上传  
       File file = new File("e:\\test1.txt");    
       t.upload(file , "/upload");    
         
       //下载  
      // t.download("/ftp/upload", "PublicCMS.rar", "E:\\db");  
         
         
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月14日

悬赏问题

  • ¥15 求指导ADS低噪放设计
  • ¥15 CARSIM前车变道设置
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存