在做ftp下载时,我先用sun公司的sun.net.ftp.FtpClient;里面提供的方法不是很
多.而使用commons.net.FTPClinet时,里面帮我们处理了很多,比sun公司提供的要
强大多了,但不足的是,这个插件有很多bug.我同样下载文件时,在xp下里能下载,
但在linux下就出错(ftpClient.retrieveFile(file, bos))无异常也不执行后面
的程序,成'假死'状态.
public class ftpClientThread{
private String server = ReadConfigProperties.getFtpServer();
private String username ="user"
private String password = "password
private String localDirectory = "F:/";
private FTPClient ftpClient;
public static void main(String[] args) {
ftpClientThread a = new ftpClientThread();
a.connectServer();
Object[] files = a.getListFiles();
if (files == null) {
return;
}
for (int i = 0; i < files.length; i++) {
a.downloadFile((String) files[i]);
System.out.println(files[i]);
}
a.closeConnect();
}
public void connectServer() {
ftpClient = new FTPClient();
try {
ftpClient.connect(server);
ftpClient.login(username, password);
System.out.println("ftp login success");
if (directory.length() != 0) {
System.out.println(directory);
ftpClient.changeWorkingDirectory
(this.directory);
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("ftp服务器连接失败");
e.printStackTrace();
}
}
public void closeConnect() {
if (ftpClient != null && ftpClient.isConnected()) {
try {
ftpClient.logout();
ftpClient.disconnect();
System.out.println("ftp disconnect
success");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void downloadFile(String file) {
BufferedOutputStream bos = null;
boolean success = false;
try {
bos = new BufferedOutputStream(new FileOutputStream(new File(
localDirectory, file)));
//linux下会'假死'在这,什么也不会发生
//retrieveFile在xp下面有时也会假死
success = ftpClient.retrieveFile(file, bos);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if (!success) {
System.out.println(file + "下载失败");
}
}
}
sun公司的ftp下载:
import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import sun.net.TelnetInputStream;
import sun.net.ftp.FtpClient;
public class ftpDown {
public static void main(String[] args) {
BufferedReader br=null;
PrintWriter pw=null;
try {
FtpClient fc=new FtpClient("www.bcc123ht.com");
fc.login("user", "password");
String ch;
File fi=new File("F:\\file\\index.html");
/*RandomAccessFile getFile=new RandomAccessFile(fi,"rw");
getFile.seek(0);*/
pw=new PrintWriter(fi);
TelnetInputStream fget=fc.get("index.html");
br=new BufferedReader(new InputStreamReader(fget));
//DataInputStream puts=new DataInputStream(fget);
while((ch=br.readLine())!=null){
pw.println(ch);
}
pw.flush();
fget.close();
//getFile.close();
fc.closeServer();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(br!=null){
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(pw!=null){
pw.close();
}
}
}
分享到:
相关推荐
org.apache.commons.net.ftp.FTPClient包,不错,在实际项目和产品中使用过。
在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...
org.apache.commons.net.ftp.FTPClient FTP工具类,实现上传、下载、压缩到输出流下载等功能
.net.ftp.FTPClient jar ,exaple, commons-net-2.0.jar
FTP应用的jar包,主要用于java开发FTP上传下载
在本文中,我们将深入探讨如何使用Apache Commons Net库和Java内置的`sun.net.ftp.FtpClient`来实现FTP(文件传输协议)的功能,包括上传、下载、批量操作以及删除文件。这两个库提供了丰富的API,使得在Java应用...
FTP是一种用于在网络上进行文件传输的协议,Apache Commons Net库中的FTP组件提供了丰富的API,使得开发者可以轻松地在Java应用程序中实现FTP文件的上传、下载、目录浏览、权限设置等功能。FTP客户端可以使用这些API...
org.apache.commons.net.ftp的官方完整jar包 放心使用
sun.net.ftp.FtpClient,it.sauronsoftware.ftp4j.FTPClient,org.apache.commons.net.ftp.FTPClient三种不同的方式操作FTP
org.apache.commons.net.util.jar
在3.3版本中,`org.apache.commons.net.ftp.FTPClient`类是实现FTP通信的核心组件。这个类提供了一系列方法,允许开发者与FTP服务器进行交互,执行如上传、下载、删除文件、创建目录等操作。 FTPClient类的主要功能...
上传了收集的最新的 commons-io-2.4.jar 包 和 commons-net-3.3.jar 以及 FTP java调用例子。net 包是一个用于操作Internet基础协议(Finger,Whois,TFTP,Telnet,POP3,FTP,NNTP,以及SMTP)的底层API。Net包...
com.enterprisedt.net.ftp.FTPClient类库的jar包,可以用来实现对FTP服务器端的处理。
标题"org.apache.commons.net.ftp"表明这个压缩包包含了与Apache Commons Net库中FTP相关的类和功能。描述提到“所有jar包里边都有”,这意味着你将获得完整的FTP支持,包括所有必要的依赖。 Apache Commons Net库...
利用org.apache.commons.net.ftp.*实现FTP批量下载,包括子目录文件
org.apache.commons.net org.apache.commons.net.bsd org.apache.commons.net.chargen org.apache.commons.net.daytime org.apache.commons.net.discard org.apache.commons.net.echo org.apache.commons.net....
org.apache.commons.net.jar包,需要org.apache.commons.net.socketfactory包的也可以直接下这个包,它里面就有包含了
它没有实现任何其他Telnet选项,因为它打算在Java程序中使用,以提供对Telnet可访问资源的自动访问。 可以通过首先使用SocketClient connect 方法连接到服务器来使用该类 。然后,可以使用getInputStream() 和 ...