java ftp下载文件问题,用的包是commons-net-1.4.1,jar

问题描述

文件下载一直失败,那个文件我能通过retrieveFileStream读取到客户端。只能求高手指点了……publicvoidloadFile(StringremoteFileName,StringlocalFileName){//下载文件OutputStreamosOutputStream=null;try{FilelocalFile=newFile(localFileName);osOutputStream=newFileOutputStream(localFile);booleansuc=ftpClient.retrieveFile(newString(remoteFileName.getBytes("GBK"),"ISO-8859-1"),osOutputStream);if(suc){System.out.println("下载文件成功");}else{System.out.println("文件下载失败");}osOutputStream.close();}catch(Exceptione){e.printStackTrace();}finally{try{if(osOutputStream!=null){osOutputStream.close();}}catch(Exceptione){e.printStackTrace();}}}

解决方案

解决方案二:
额……解决不了啊,网上全是这个方法,为什么我的就不行
解决方案三:
FTP编程,一般就三大问题,楼主看看是哪一个?1.主动模式和被动模式问题;2.命令连接和数据连接问题;3.文件数据的编码传输问题。1.客户端这边存在NAT或者PAT的时候(或者路由器,防火墙的时候),采用被动模式进行下载即可。2.网络较慢或者文件数据较大使得数据传输时间超长,造成控制连接被中间节点(防火墙或路由器)强行断开。当然,有的服务器也会自行断开超时的控制连接。3.传输文件可以选用ACSII码和Binary进行传输,在选用ACSII码时由于操作系统不同,回车换行符的内容有可能会被更改。
解决方案四:
//设置以二进制形式传输ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

解决方案五:
ftpClient.enterLocalPassiveMode();

解决方案六:
引用3楼的回复:

Javacode//设置以二进制形式传输ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

都加了还是不行……再用sun的试试了只能。
解决方案七:
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importnc.itf.doc.DocDelegator;importnc.vo.doc.doc_007.DirVO;importnc.vo.pub.BusinessException;importnc.vo.pub.SuperVO;importorg.apache.commons.net.ftp.FTPClient;importorg.apache.commons.net.ftp.FTPFile;importorg.apache.commons.net.ftp.FTPReply;importorg.apache.commons.net.ftp.FTP;publicclassFtpTool{privateFTPClientftp;privateStringromateDir="";privateStringuserName="";privateStringpassword="";privateStringhost="";privateStringport="21";publicFtpTool(Stringurl)throwsIOException{//Stringurl="ftp://user:password@ip:port/ftptest/psd";intlen=url.indexOf("//");StringstrTemp=url.substring(len+2);len=strTemp.indexOf(":");userName=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);len=strTemp.indexOf("@");password=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);host="";len=strTemp.indexOf(":");if(len<0)//没有设置端口{port="21";len=strTemp.indexOf("/");if(len>-1){host=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);}else{strTemp="";}}else{host=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);len=strTemp.indexOf("/");if(len>-1){port=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);}else{port="21";strTemp="";}}romateDir=strTemp;ftp=newFTPClient();ftp.connect(host,FormatStringToInt(port));}publicFtpTool(Stringhost,intport)throwsIOException{ftp=newFTPClient();ftp.connect(host,port);}publicStringlogin(Stringusername,Stringpassword)throwsIOException{this.ftp.login(username,password);returnthis.ftp.getReplyString();}publicStringlogin()throwsIOException{this.ftp.login(userName,password);System.out.println("ftp用户:"+userName);System.out.println("ftp密码:"+password);if(!romateDir.equals(""))System.out.println("cd"+romateDir);ftp.changeWorkingDirectory(romateDir);returnthis.ftp.getReplyString();}publicbooleanupload(Stringpathname,Stringfilename)throwsIOException,BusinessException{intreply;intj;Stringm_sfilename=null;filename=CheckNullString(filename);if(filename.equals(""))returnfalse;reply=ftp.getReplyCode();if(!FTPReply.isPositiveCompletion(reply)){ftp.disconnect();System.out.println("FTPserverrefusedconnection.");System.exit(1);}FileInputStreamis=null;try{Filefile_in;if(pathname.endsWith(File.separator)){file_in=newFile(pathname+filename);}else{file_in=newFile(pathname+File.separator+filename);}if(file_in.length()==0){System.out.println("上传文件为空!");returnfalse;}//产生随机数最大到99j=(int)(Math.random()*100);m_sfilename=String.valueOf(j)+".pdf";//生成的文件名is=newFileInputStream(file_in);ftp.setFileType(FTP.BINARY_FILE_TYPE);ftp.storeFile(m_sfilename,is);ftp.logout();}finally{if(is!=null){is.close();}}System.out.println("上传文件成功!");returntrue;}publicbooleandelete(Stringfilename)throwsIOException{FileInputStreamis=null;booleanretValue=false;try{retValue=ftp.deleteFile(filename);ftp.logout();}finally{if(is!=null){is.close();}}returnretValue;}publicvoidclose(){if(ftp.isConnected()){try{ftp.disconnect();}catch(IOExceptione){e.printStackTrace();}}}publicstaticintFormatStringToInt(Stringp_String){intintRe=0;if(p_String!=null){if(!p_String.trim().equals("")){try{intRe=Integer.parseInt(p_String);}catch(Exceptionex){}}}returnintRe;}publicstaticStringCheckNullString(Stringp_String){if(p_String==null)return"";elsereturnp_String;}publicbooleandownfile(Stringpathname,Stringfilename){StringoutputFileName=null;booleanretValue=false;try{FTPFilefiles[]=ftp.listFiles();intreply=ftp.getReplyCode();////////////////////////////////////////////////if(!FTPReply.isPositiveCompletion(reply)){try{thrownewException("Unabletogetlistoffilestodowload.");}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}/////////////////////////////////////////////////////if(files.length==0){System.out.println("Nofilesareavailablefordownload.");}else{for(inti=0;i<files.length;i++){System.out.println("Downloadingfile"+files[i].getName()+"Size:"+files[i].getSize());outputFileName=pathname+filename+".pdf";//returnoutputFileName;Filef=newFile(outputFileName);//////////////////////////////////////////////////////retValue=ftp.retrieveFile(outputFileName,newFileOutputStream(f));if(!retValue){try{thrownewException("Downloadingofremotefile"+files[i].getName()+"failed.ftp.retrieveFile()returnedfalse.");}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}}/////////////////////////////////////////////////////////////}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnretValue;}}
解决方案八:
c

时间: 2024-09-23 23:27:42

java ftp下载文件问题,用的包是commons-net-1.4.1,jar的相关文章

java 多线程-为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开

问题描述 为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开 为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开?? package com.miuitust.mutilethread; import java.io.File; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; impor

java多个文件压缩成zip包,并删掉源文件

问题描述 java多个文件压缩成zip包,并删掉源文件 一个文件夹下有txt文件,csv文件,zip文件,怎么将该文件夹下的所有csv文件压缩成zip包,并删掉原始的csv文件,大神能不能给个例子看一下,谢谢了. 解决方案 java压缩成zip 解决方案二: 这么专业的问题,路过,同求 解决方案三: public static void fileToZip(String sourceFilePath){ File sourceFile = new File(sourceFilePath); Fi

ftp文件下载-expect ftp 下载文件文件损坏,写法如下,

问题描述 expect ftp 下载文件文件损坏,写法如下, #!/bin/expect set timeout 30 set host 10.9.9.145 set login_name zzz set login_pwd zzz set localpath "/home/acc/songt/read" set remotepath "/home/acc/songt/write" spawn -noecho ftp -i $host expect { timeou

java操作ftp下载文件示例_java

复制代码 代码如下:     /**     *      * JAVA操作 FTP 下载     * 文件下载.     *     */    private void ftpDownload()    {        FTPClient ftpClient = null;        InputStream input = null;        boolean loginFlag = false;        List<String> list = new ArrayList&

C#从FTP下载文件无法返回文件长度

问题描述 我要从FTP服务器下载指定文件,比如A.zip大小100kb,等下载成功,这个文件名,大小等信息会被存入一个数据库,等下次下载的时候会去比较,如果两个文件大小一致,就不下了,现在出了一个问题,返回的contentLength始终为-1,但是东西还是有的,可以下载下来,FTP是我自己临时搭建的,系统为win7,网络为政务外网,但是我家里自己测试的时候,用的清华大学FTP,可以返回文件大小,不知道怎么回事,是FTP设置的问题吗?查了MSDN说如果服务器没有返回长度则是-1,怎么搞?priv

我的Java开发学习之旅------&amp;gt;Java多线程下载文件 实例

import java.io.File; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; public class MulThreadDownload { public static void main(String[] args) throws Exception { String path = "http:/

VB.NET中使用FTP下载文件的两种方法

下载   .net没有专门处理FTP的类,我们可以通过调用系统自带的FTP.EXE 或者是调用win32 API中的wininet.dll来完成基本操作.希望以下的代码能为大家抛砖引玉. 方法一: 使用Ftp.exe ,通过process类来调用它. Imports System.Diagnostics ...   Public Sub GetFileByCallFtp()        '定义ProcessStartInfo,Process的启动信息.         Dim psi As N

java web下载文件时报response has been committed

问题描述 好奇怪的问题,我下载txt文件,里面有7万的数据,单次下载一个文件22M.但是我连续点击两次下载按钮,程序就死在不动,过一段时间后就报下面的错误.java.lang.IllegalStateException:Cannotforwardafterresponsehasbeencommitted现在不知道是哪里的问题,难道是我多次点击下载,由于访问数据库时间较长,第二次下载请求把第一次的请求覆盖了?网上说,responsehasbeencommitted一般是多次重定向导致的,我检查了代

用Java HTTP下载文件获取失败,不明原因

问题描述 我用JAVA下载小于1K的文件,下载下来后发现,文件全都是固定大小.我试过用BufferedOutputStream也用了FileOutputStreamRandomAccessFile也用了就是无法打开文件,应该是获取文件的长度出错了RandomAccessFileoSavedFile=newRandomAccessFile(downloadpathTemp+"\"+ffName,"rw");FileOutputStreamfs=newFileOutpu