java 下载异地FTP中的zip文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 下载异地FTP中的zip文件相关的知识,希望对你有一定的参考价值。
public class FtpClientUtil
FtpClient ftpClient;
private String server;
private int port;
private String userName;
private String userPassword;
public FtpClientUtil(String server,int port,String userName,String userPassword)
this.server=Constants.FTP_IP;
this.port=Constants.FTP_PORT;
this.userName=Constants.USER_NAME;
this.userPassword=Constants.USER_PASSWORD;
/**
* 链接到服务器
* @return
*/
public boolean open()
if(ftpClient!=null&&ftpClient.serverIsOpen())
return true;
try
ftpClient= new FtpClient();
ftpClient.openServer(server,port);
ftpClient.login(userName, userPassword);
ftpClient.binary();
return true;
catch(Exception e)
e.printStackTrace();
ftpClient=null;
return false;
public boolean cd(String dir)
boolean f = false;
try
ftpClient.cd(dir);
catch (IOException e)
e.printStackTrace();
return f;
return true;
/**
* 从FTP服务器上下载文件并返回下载文件长度
* @param ftpDirectoryAndFileName
* @param localDirectoryAndFileName
* @return
* @throws Exception
*/
public long download(String ftpDirectoryAndFileName,String localDirectoryAndFileName)throws Exception
long result = 0;
if(!open())
return result;
TelnetInputStream is = null;
FileOutputStream os = null;
try
is = ftpClient.get(ftpDirectoryAndFileName);
java.io.File outfile = new java.io.File(localDirectoryAndFileName);
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1)
os.write(bytes, 0, c);
result = result + c;
catch (Exception e)
throw e;
finally
if (is != null)
is.close();
if (os != null)
os.close();
return result;
这里的 ftpDirectoryAndFileName和localDirectoryAndFileName按照字面意思第一个是ftp的目录地址,后面的是本地的目录地址。
但是ftpDirectoryAndFileName和localDirectoryAndFileName应该怎么写呢?
我ftpDirectoryAndFileName为:"",localDirectoryAndFileName为:"E:\\temp_workspace\\tmp\\"
提示sun.net.ftp.FtpProtocolException: 501 Syntax error: Invalid number of parameters.的错误。
我只要下载这部分的,代码测试好了的再贴,我会再加50分的
这部分已经搞定了,是少了一个获取FTP服务器上的数据命名规则,或者载入sun下的ftpClient的一个包就搞定了,谢谢你们,只能给一个人分,那就给第一个回答问题的人吧!:)
is = ftpClient.get(ftpDirectoryAndFileName);
这里,你将ftpDirectoryAndFileName设置为"",那么将会从哪下载什么文件呢?
从一个空的地方得到FTP的输入流?
感觉应该指定某个FTP地址上的某个文件吧。 参考技术C 好像需要一个支持jar包把,把ftp4j的下载地址贴出来
参考资料:http://www.hatxt.com
本回答被提问者采纳使用 Java 中的 Selenium WebDriver 下载 zip 文件 - 下载弹出窗口总是来
【中文标题】使用 Java 中的 Selenium WebDriver 下载 zip 文件 - 下载弹出窗口总是来【英文标题】:Download a zip file using Selenium WebDriver in Java - Download Popup is coming always 【发布时间】:2015-01-18 18:05:32 【问题描述】:我正在使用以下代码从网站下载文件,我正在使用 Firefox 32.0.3 和 Selenium jar 版本 - 2.43。
FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList",2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting",false);
firefoxProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
firefoxProfile.setPreference("browser.download.dir","C:\\RDM_Files");
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/zip;application/octet-stream;application/x-zip;application/x-zip-compressed");
firefoxProfile.setPreference("plugin.disable_full_page_plugin_for_types", "application/zip");
WebDriver driver = new FirefoxDriver(firefoxProfile);
我检查了正在下载的文件的 MIME 类型是 application/zip。每次我尝试下载文件时,都会出现一个窗口,要求打开文件或保存文件。
我搜索了 ***.com 并找到了与处理 .pdf 文件但不是 zip 文件相关的帖子。请帮忙
【问题讨论】:
【参考方案1】:我认为您正在寻找类似的东西
//common to all the cases
FirefoxProfile prof = new FirefoxProfile();
//Case:1 - Use this case to set download this code to your browser's default location
//prof.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/zip");
//Case:2 - Download file to Desktop
//prof.setPreference("browser.download.folderList", 0);
//prof.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/zip");
//Case:3 - Download to custom folder path. Replace d:\\selenium with your Download Location
prof.setPreference("browser.download.dir","D:\\selenium\\");
prof.setPreference("browser.download.folderList", 2);
prof.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/zip");
//This will work for all cases mentioned above
WebDriver driver = new FirefoxDriver(prof);
driver.get("http://docs.seleniumhq.org/download/");
driver.findElement(By.xpath("//tr[1]/td[4]/a[text()='Download']")).click();
【讨论】:
【参考方案2】:禁止弹出系统非网页下载/保存对话框。
FirefoxProfile prof = new FirefoxProfile();
ffprofile.setPreference("browser.download.panel.shown", false);
ffprofile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/zip");
//ffprofile.setPreference("browser.download.folderList", 1); // Default to /home/user/Downloads in Linux.
ffprofile.setPreference("browser.download.folderList", 2);
ffprofile.setPreference("browser.download.dir", "/tmp");
【讨论】:
以上是关于java 下载异地FTP中的zip文件的主要内容,如果未能解决你的问题,请参考以下文章
org.apache.commons.net.ftp.FTPClient下载中文文件夹乱码如何处理?
突破PHP免费空间文件格式上传限制-FTP传zip,PHP解压zip文件 - 比单文件管理器更好用