import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.StringTokenizer; import sun.net.TelnetInputStream; import sun.net.TelnetOutputStream; import sun.net.ftp.FtpClient; import sun.net.ftp.FtpLoginException; public class ftp ... { FtpClient aftp; DataOutputStream outputs; TelnetInputStream ins; TelnetOutputStream outs; int ch; public String a; String hostname = ""; private String path = "/"; public static void main(String[] args) ...{ String hostname = "133.133.133.34"; int port = 21; String uid = "olympic"; String pwd = "olympic"; String RWFileDir = "D:\temp\files";// 文件目录 // 连接ftp服务器 ftp ft = new ftp(); ft.connect(RWFileDir, hostname, port, uid, pwd); // 下载文件 if (ft.aftp != null) ...{ try ...{ ft.getNameList(RWFileDir); } catch (IOException e) ...{ System.out.println("下载文件出错:" + e); } } // 断开服务器连接 ft.stop(RWFileDir); } public FtpClient connect(String RWFileDir, String hostname, int port, String uid, String pwd) ...{ this.hostname = hostname; System.out.println("正在连接" + hostname + ",请等待....."); try ...{ aftp = new FtpClient(hostname, port); aftp.login(uid, pwd); aftp.binary(); // aftp.openPortDataConnection(); a = "连接主机:" + hostname + "成功!"; System.out.println(a); } catch (FtpLoginException e) ...{ a = "登陆主机:" + hostname + "失败!请检查用户名或密码是否正确:" + e; System.out.println(a); // return false; } catch (IOException e) ...{ a = "连接主机:" + hostname + "失败!请检查端口是否正确:" + e; System.out.println(a); // return false; } catch (SecurityException e) ...{ a = "无权限与主机:" + hostname + "连接!请检查是否有访问权限:" + e; System.out.println(a); // return false; } log(RWFileDir, a); return aftp; } public void stop(String RWFileDir) ...{ String message = ""; try ...{ if (aftp != null) ...{ aftp.closeServer(); message = "与主机" + hostname + "连接已断开!"; System.out.println(message); log(RWFileDir, message); } } catch (IOException e) ...{ message = "与主机" + hostname + "断开连接失败!" + e; System.out.println(message); log(RWFileDir, message); } } public boolean downloadFile(String RWFileDir, String filepathname) ...{ boolean result = true; String message = ""; if (aftp != null) ...{ System.out.println("正在下载文件" + filepathname + ",请等待...."); String badfile = filepathname.substring(filepathname.length() - 4, filepathname.length()); String badlog = filepathname.substring(filepathname.length() - 7, filepathname.length()); String baddir = ""; if ((badfile.compareTo(".bad") != 0) && (badlog.compareTo(".badlog") != 0)) ...{ baddir = "subunsubtosp\"; } else ...{ baddir = "bad\"; } String strdir = "subunsubtosp\"; // System.out.println(RWFileDir + baddir + filepathname); try ...{ // FtpClient fc=new FtpClient("192.168.0.56",2121); // fc.login("lee","lee"); int ch; File fi = new File(RWFileDir + baddir + filepathname); // aftp.cd(strdir); RandomAccessFile getFile = new RandomAccessFile(fi, "rw"); getFile.seek(0); TelnetInputStream fget = aftp.get(strdir + filepathname); DataInputStream puts = new DataInputStream(fget); while ((ch = puts.read()) >= 0) ...{ getFile.write(ch); } // s.delete(); fget.close(); getFile.close(); // fc.closeServer(); message = "下载" + filepathname + "文件到" + bad