FTPClient ftp = new FTPClient();
try {
//logger.info("准备链接FTP");
System.out.println("准备链接FTP");
int reply;
ftp.connect(ip, port);
ftp.login(username, password);
reply = ftp.getReplyCode();
System.out.println("reply="+reply);
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.err.println("FTP server refused connection.");
//logger.info("FTP server refused connection.");
System.exit(1);
}
boolean b = ftp.changeWorkingDirectory(remotepath);
System.out.println(b);
                        //*****************************
FTPFile[] files = ftp.listFiles();
                       //*****************************
System.out.println("list done");
for (FTPFile f:files) {
if (f.isFile()) {
String fileName = f.getName();
System.out.println(fileName);
String fileTime = ftp
.getModificationTime(remotepath + fileName);
if (fileTime.substring(0,10).equals(ut.use(1))) {
File localFile = new File(localPath + fileName);
OutputStream is = new FileOutputStream(localFile);
//logger.info("begin down");
System.out.println("begin down");
ftp.retrieveFile(fileName, is);
is.flush();
                                               ...  ...FTPFile[] files = ftp.listFiles(); 这句没有执行,卡到这里了,出了什么问题那??谢谢!!

解决方案 »

  1.   

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.text.SimpleDateFormat;
    import java.util.Date;import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    import org.apache.commons.net.ftp.FTPReply;
    import org.apache.log4j.Logger;public class FtpDown {
    //static Logger logger = Logger.getLogger("");
    public void downFile(String ip, int port, String username, String password,
    String remotepath, String localPath) { // Date currentTime = new Date();
    // SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
    // String dateString = formatter.format(currentTime);
    // //20110908 13 2706
    // String utildate = dateString.substring(8,10);
    UtilTime ut = new UtilTime(); FTPClient ftp = new FTPClient();
    try {
    //logger.info("准备链接FTP");
    System.out.println("准备链接FTP");
    int reply;
    ftp.connect(ip, port);
    ftp.login(username, password);
    reply = ftp.getReplyCode();
    System.out.println("reply="+reply);
    if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    System.err.println("FTP server refused connection.");
    //logger.info("FTP server refused connection.");
    System.exit(1);
    }
    boolean b = ftp.changeWorkingDirectory(remotepath);
    System.out.println(b);
    FTPFile[] files = ftp.listFiles();//*****************************
    System.out.println("list done");
    for (FTPFile f:files) {
    if (f.isFile()) {
    String fileName = f.getName();
    System.out.println(fileName);
    String fileTime = ftp
    .getModificationTime(remotepath + fileName);
    if (fileTime.substring(0,10).equals(ut.use(1))) {
    File localFile = new File(localPath + fileName);
    OutputStream is = new FileOutputStream(localFile);
    //logger.info("begin down");
    System.out.println("begin down");
    ftp.retrieveFile(fileName, is);
    is.flush();
    is.close();
    //logger.info("down over");
    System.out.println("down over");
    }
    }
    // String fileName = f.getName();
    // System.out.println(fileName);
    // String fileTime = ftp
    // .getModificationTime(remotepath + fileName);
    // if (fileTime.substring(0,10).equals(ut.use(1))) {
    // File localFile = new File(localPath + fileName);
    // OutputStream is = new FileOutputStream(localFile);
    // //logger.info("begin down");
    // System.out.println("begin down");
    // ftp.retrieveFile(fileName, is);
    // is.flush();
    // is.close();
    // //logger.info("down over");
    // System.out.println("down over");
    // }
    }
    // for (int i=0;i<files.length;i++){
    // System.out.println("ok");
    // String fileName = files[i].getName();
    // System.out.println(fileName);
    // String fileTime = ftp
    // .getModificationTime(remotepath + fileName);
    // if (fileTime.substring(0,10).equals(ut.use(1))) {
    // File localFile = new File(localPath + fileName);
    // OutputStream is = new FileOutputStream(localFile);
    // //logger.info("begin down");
    // System.out.println("begin down");
    // ftp.retrieveFile(fileName, is);
    // is.flush();
    // is.close();
    // //logger.info("down over");
    // System.out.println("down over");
    // }
    // }
    ftp.logout();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (ftp.isConnected()) {
    try {
    ftp.disconnect();
    } catch (IOException ioe) {
    // do nothing
    }
    }
    } }}