您的位置:首页 > 编程语言 > PHP开发

FTPClient文件下载

2016-03-25 16:24 429 查看
一、FTPClient下载文件所需要的jar包:

  org.apache.commons.net 【commons-net-3.4.jar】

二、FTPClient的连接和关闭

//FTPClient的连接
public FTPClient ftpConnecting(String IP, int port,String username,String pwd){
FTPClient ftpClient=new FTPClient();

try {
//连接IP 如果port【端口】存在的话
ftpClient.connect(IP,port);

//登录
ftpClient.login(username, pwd);

//连接尝试后,应检查回复代码以验证
int reply=ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)){  //没验证成功
//断开ftp连接
ftpClient.disconnect();
return null;
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return ftpClient;
}


关闭:

//FTPClient 的关闭
public void ftpClose(FTPClient ftpClient){
if(ftpClient.isConnected()){
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}


注意:在连接FTPClient的时候,一些默认的属性要进行设置。如

setBufferSize(int bufSize):设置文件转移时候的一次性读取大小;

setFileType(int fileType) :设置文件转移的时候,文件的格式。默认的是:
FTP.ASCII_FILE_TYPE;但是我们一般需要的格式是:
FTP.BINARY_FILE_TYPE。因此,为了保证转移文件的准确性,可以进行如下设置:


[code]ftpClient.setBufferSize(1024);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

//可以忽略换行符【\r|\n】等在不同平台之间产生的差异,保证文件大小一致。 对于打印字符【CR|LF】也可以正确的转移。


三、通过FTPClient下载文件

/**
* FTPClient 下载文件
* @param remotePath : ftp上的地址:   /export/home/test.txt
* @param localPath:本地存放文件的地址 如:D:\EDI_TEST_FILE\00ec9bcfbcc441c699301fac111feb03\Sybase\fact\test.txt
*/
public void getFileByFtp(String remotePath,String localPath){
File localFile=new File(localPath);
OutputStream ous=null;
FTPClient client=ftpConnecting("122.22.222.111", 8080,"name","pwd");
try {
ous=new FileOutputStream(localFile);
client.retrieveFile(remotePath, ous);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


四、简单测试例子

public static void main(String[] args) {
  //保证文件名一致
FtpTest.getFileByFtp("/export/home/I_14096D46F88D617FA0B80D0B3B6D1EF5","D:/fact/I_14096D46F88D617FA0B80D0B3B6D1EF5");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: