读取FTP文本并入库

来源:互联网 发布:手机淘宝店铺怎么登录 编辑:程序博客网 时间:2024/05/01 02:25

两个jar包

commons-net-1.4.1.jar

jakarta-oro-2.0.8.jar


代码 

package net.sxjr.an.renbao;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Date;
import net.sxjr.an.utils.MyUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;


public class ApiUtilsRenbao {   
    public static void reportDispose(){
  //ftp服务器登录凭证
    String host="61.178.21.80";
    int port=21;
    String user="xxx";
    String password="xxxx";
    String txtFileDir="/";
    String dateString=MyUtils.parseDate(MyUtils.changeDateByDay(new Date(), -1));
    String cbString ="新承保清单"+dateString+".txt";
    boolean success = false;    
    FTPClient ftp = new FTPClient();  

 //设置中文编码
    ftp.setControlEncoding("GBK");
    try {    
        int reply;    
        ftp.connect(host, port);    
        //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器     
        ftp.login(user, password);//登录     
        reply = ftp.getReplyCode();    
        if (!FTPReply.isPositiveCompletion(reply)) {    
            ftp.disconnect();   
            return;
        }   
        System.out.println("aaa");
        ftp.changeWorkingDirectory(dateString);//转移到FTP服务器目录     
        FTPFile[] fs = ftp.listFiles();  
        
    for(FTPFile ff:fs){ 
         System.out.println("line======" + ff.getName());

//遍历所有文件根据文件名匹配
       if(ff.getName().equals(cbString)){  
           System.out.println(new Date()+"  ftpDownload定时器读取成功"+ff.getName()); 
           String result =readFile(ftp,ff.getName());
           //BufferedReader br = new BufferedReader(new InputStreamReader(is));   
//           String line = null;
//           while ((line = br.readLine()) != null) {
//           System.out.println("line======" + line);
//           }
//           br.close();
        } 
    }
        ftp.logout();    
        success = true;    
    } catch (IOException e) {    
        e.printStackTrace();    
    } finally {    
        if (ftp.isConnected()) {    
            try {    
                ftp.disconnect();    
            } catch (IOException ioe) {    
            }    
        }    
    }  
   }


    /**
    * 返回一个文件流
    * @param fileName
    * @return
    */
    public static String readFile(FTPClient ftp,String fileName){
    String result = "";
    InputStream ins = null;
    try {
    ins = ftp.retrieveFileStream(fileName);


    // byte []b = new byte[ins.available()];
    // ins.read(b);
    //BufferedReader reader=new BufferedReader(new InputStreamReader(ins)); 
    InputStreamReader isr = new InputStreamReader(ins, "GBK");
    BufferedReader reader = new BufferedReader(isr);
    String inLine = reader.readLine();
    while (inLine != null) {
        System.out.println(inLine);
    result += (inLine + System.getProperty("line.separator"));
    inLine = reader.readLine();
    }
    reader.close();
    if(ins != null){
    ins.close(); 
    }


    // 主动调用一次getReply()把接下来的226消费掉. 这样做是可以解决这个返回null问题
    ftp.getReply();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return result;
    }
    public static void main(String[] args) {
        reportDispose();
    }
}

0 0