java ftp 正在下载的文件使用后缀.tmp标记,下载完成后使用ftp上的文件名

各位大神,我想实现这样一个功能:使用java语言从ftp上下载文件,正在下载中的文件使用.tmp后缀标记,下载完成后使用.log.gz,ftp上的文件就是.log.gz文件,请问怎么实现,最好有代码。使用字符串拼接,还有下载完成重命名都试过了,不起作用。

4个回答

感觉像是文件没关闭造成的,你尝试着在fos.flush();后加一个fos.close()看看

qq_37257738
TaroLee 回复tang_cheng: 问题解决了,配置ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);就OK了
一年多之前 回复
qq_37257738
TaroLee 回复tang_cheng: 您好,在所有的fos.flush后边都加上fos.close()之后文件类型可以转换过来了,但是转换后的文件是损坏的,您知道是什么原因吗?
一年多之前 回复
qq_37257738
TaroLee 确实是这种情况,刚才发现的,谢谢你
一年多之前 回复
tang_cheng
tang_cheng 所有的fos.flush后都要加
一年多之前 回复

这个文件类型没任何关系,应该是你代码问题,你把相关代码先贴一下吧。

qq_37257738
TaroLee 代码我放到下边了
一年多之前 回复

别管文件名,下载完成后重命名就行了

private boolean downFileOrDir(String ftpFileName, String localDir) {
boolean flag = true;
try {
File file = new File(ftpFileName);

            File temp = new File(localDir);

            if(!temp.exists()) {
                temp.mkdirs();
            }

            //判断是否是目录
            if(isDir(ftpFileName)) {
                String [] names = ftpClient.listNames();
                for(int i=0; i < names.length; i++) {
                    System.out.println(i+1+":"+names[i]+"++++++");
                    if(isDir(names[i])) {
                        downFileOrDir(ftpFileName+'/'+names[i], localDir + File.separator + names[i].replace("*.", ""));
                        ftpClient.changeToParentDirectory();
                    }else {
                        String filetmp = localDir + File.separator + names[i]+".tmp";
                        String filedone = localDir + File.separator + names[i];
                        File localfile = new File(filetmp);
                        File localfiledone = new File(filedone);
                        if(localfiledone.exists()) {
                            continue;
                        }else if(localfile.exists()){
                            localfile.delete();
                            fos = new FileOutputStream(localfile);
                            ftpClient.retrieveFile(names[i], fos);
                            fos.flush();
                        } else {
                            fos = new FileOutputStream(localfile);
                            ftpClient.retrieveFile(names[i], fos);
                            fos.flush();
                        }
                        boolean b = localfile.renameTo(new File(filedone));
                        System.out.println(b);
                    }
                }
            } else {
                String filetmp = localDir + File.separator + file.getName() +".tmp";
                String filedown = localDir + File.separator + file.getName();
                File localfile = new File(filetmp);
                File localfiledown = new File(filedown);
                if(localfiledown.exists()) {
                    return true;
                } else if(localfile.exists()){
                    logger.debug("开始删除文件");
                    localfile.delete();
                    logger.debug("文件已经删除");
                    fos = new FileOutputStream(localfile);
                    ftpClient.retrieveFile(ftpFileName, fos);
                    fos.flush();
                } else {
                    fos = new FileOutputStream(localfile);
                    ftpClient.retrieveFile(ftpFileName, fos);
                    fos.flush();
                }
                localfile.renameTo(localfiledown);
                ftpClient.changeToParentDirectory();
            }

            logger.info("下载成功!");
        } catch(SocketException e) {
            logger.error("连接失败!", e);
            flag = false;
            return flag;
        }catch (IOException e) {
            logger.error("下载失败!", e);
            flag = false;
            return flag;
    }
    return flag;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ftp文件上下载
提供ftp方式下的服务器和客户端实现文件传输和数据通信
java FTP 使用,上传与下载
java FTP 使用,上传与下载java FTP 使用,上传与下载
使用Java方式ftp下载
1、引入maven配置(commons-net,当前版本最新3.6); commons-net commons-net 3.6 2、下面是源码: import org.apache.commons.net.ftp.FTPClient; import org.apache.c
使用FTP下载目录
NULL 博文链接:https://45121739-163-com.iteye.com/blog/668639
ftp 的下载使用 2018-04-19
技术变化日新月异,本文的写作于2018.04.19  时间过长的话,不保证内中知识的有效性.    1.FileZilla下载安装。我们可以通过FileZilla官网,或者景安常用软件栏目下载FileZilla。之后,选择默认标准的安装方式安装即可(这里以windows VPS实例,和普通软件安装样简单,过程步骤细说)。      安装FileZilla Server需要注意的就是,建...
FTP下载 FTP下载 FTP下载
FTP下载FTP下载FTP下载FTP下载FTP下载FTP下载FTP下载FTP下载
关于下载FTP上的文件
我用了SYSTEM.NET 里面的WEBSERVICE,使用DOWNLOADFILE方法,想从FTP上下载一个文件rnrn如果我写:rnrnWC1.DOWNLOADFILE("HTTP://qhaha.51.net/111.gif","c:\111.gif")rnrn是对的;rnrn但如果写:rnrnWC1.DOWNLOADFILE("HTTP://qhaha.51.net/index.php","c:\222.php")rnrn那么他就把我的PHP解析后给我了,可我要源文件,不要解析rnrn于是我尝试用FTPrnrnWC1.DOWNLOADFILE("FTP://USER:PASSWORD@qhaha.51.net/111.gif","c:\111.gif")rnrnWC1.DOWNLOADFILE("FTP://USER:PASSWORD@qhaha.51.net/INDEX.PHP","c:\22.PHP")rnrn结果这两个都是异常退出rnrn请问,这是我没写好代码,还是FTP的限制??rnrn注:rnrn使用 FTP://USER:PASSWORD@qhaha.51.net/INDEX.PHP 在IE浏览器里,说找不到这个页面rnrn但写rnrnFTP://USER:PASSWORD@qhaha.51.net/INDEX.HTM 或rnFTP://USER:PASSWORD@qhaha.51.net/111.GIFrn rn则正确显示rn
FTP JAVA工具类(连接FTP,上传文件到FTP,删除FTP文件,下载FTP文件,检索FTP文件)
连接FTP,上传文件到FTP,删除FTP文件,下载FTP文件,检索FTP文件
java下载ftp文件.txt
通过java代码来实现下载ftp服务器文件
JAVA FTP 操作类(上传、下载、处理FTP上的文件)
JAVA FTP帮助类,包括FTP连接、文件的上传、下载、目录的创建、删除
使用FTP控件下载的问题
FTP Server为IIS5.0中的FTP服务器,并设定好用户主目录。现要把该主目录下的所有文件下载到另一台机器上,请问下列代码有何问题:(通过调试,发现程序在执行到NMFTP1->List();时死了,此时CPU的使用率高达100%,不知是何原因?请各位朋友帮帮我)rnrnvoid __fastcall TForm1::Button1Click(TObject *Sender)rnrn AnsiString fName;rn int fCount;rnrn if(NMFTP1->Connected)rn NMFTP1->Disconnect();rn elsern rn NMFTP1->Vendor =NMOS_AUTO;rn NMFTP1->Port =21;rn NMFTP1->TimeOut =5000;rn NMFTP1->Host =ipAddrrn NMFTP1->UserID ="userID";rn NMFTP1->Password ="pwd";rn NMFTP1->Connect();rn rnrn NMFTP1->Mode(MODE_IMAGE);rn NMFTP1->ParseList =true;rn NMFTP1->List();rnrn fCount=NMFTP1->FTPDirectoryList->name->Count;rn for(int i=0;iFTPDirectoryList->name->Strings[i];rn NMFTP1->Download(fName,fName);rn rn
C#使用FTP下载失败
[code=csharp]rn private void button1_Click(object sender, EventArgs e)rn rn int qq = DownloadFtp("e:\\", "1234.txt", "192.168.1.18", "dsfrpt", "dsfrpt0420");rn rn string errormsg = "";rn //bool flag = IsCanConnectFtp("dsfrpt", "dsfrpt0420", out errormsg);rn if (qq==0)rn rn rn MessageBox.Show("成功");rn rn elsern rn MessageBox.Show("失败");rn rn rn public static int DownloadFtp(string filePath, string fileName, string ftpServerIP, string ftpUserID, string ftpPassword)rn rn FileInfo fileInf = new FileInfo(filePath + "\\" + fileName);rn MessageBox.Show(fileInf.Name);rn FtpWebRequest reqFTP;rn tryrn rn //filePath = <>, rn //fileName = <>rn //FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);rn string[] aa = filePath.Split('\\');rnrn reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/upload/" + fileInf.Name));rn rn reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;rn //reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;rn reqFTP.UseBinary = true;rn reqFTP.Credentials = new NetworkCredential("dsfrpt", "dsfrpt0420");rn FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();rn Stream ftpStream = response.GetResponseStream();rn long cl = response.ContentLength;rn int bufferSize = 2048;rn rn int readCount;rn byte[] buffer = new byte[bufferSize];rnrn readCount = ftpStream.Read(buffer, 0, bufferSize);rn FileStream outputStream = null;rn MessageBox.Show(readCount.ToString());rn if (readCount > 0)rn rn outputStream = new FileStream("d:\\测试.txt", FileMode.Create);rn rn rn while (readCount > 0)rn rn outputStream.Write(buffer, 0, readCount);rn readCount = ftpStream.Read(buffer, 0, bufferSize);rn rnrn ftpStream.Close();rn outputStream.Close();rn response.Close();rn return 0;rn rn catch (Exception ex)rn rn //Logging.WriteError(ex.Message + ex.StackTrace);rn return -2;rn rn rn[/code]
ftp下载FtpGetFile使用问题
if(FtpSetCurrentDirectory(hConnect, wsDirectory))rnrn return ::FtpPutFile(hConnect, L"X:/11/Download/test.txt", L"test.txt",FTP_TRANSFER_TYPE_BINARY,0);rnrn文件上传需要先设置服务器目录,然后指定本地地址上传,可以成功。但这样的操作,下载文件不成功。。谁知道怎么实现?
使用FTP下载的文件,自动换行,空格的处理方法
1.选择二进制方式重新下载 2.将每行的换行符替换为空字符串 public function formatWenJian(){ //http://127.0.0.1/index.php/home/test/formatWenJian?path=http://127.0.0.1/application/admin/view2/order/import_order.html ...
FTP下载自动更新文件
FTP模式下载文件更新,只要配置下载路径、用户名和密码多线程下载文件,根据文件大小支持断点下载文件。更新完成后自动打开运行的exe文件(需要配置)
cmd下载ftp文件
通过命令下载ftp文件步骤: 1.cmd 进入dos命令 2.输入ftp,切换到ftp下 3.open ip 打开要访问的ftp资源 4.输入用户名,密码 5.pwd 打印当前路径,cd 切换到资源路径 6.dir 显示路径下所有文件 7.lcd 路径,文件要下载到本地位置 8.mget 文件名,下载文件 9.bye 退出ftp操作步骤如图: ps:电脑上没有图片工具,做的有
ftp下载多个文件
备忘: ftp下载多个文件命令 [code=&quot;dos&quot;]&gt;mget[/code] 不过这样写会每个文件都询问是否下载,很烦。 这里加入prompt,就没有了。 [code=&quot;dos&quot;]&gt;prompt[/code] [code=&quot;dos&quot;]&gt;mget *[/code]...
ftp下载 文件
对于ftp下载文件 如果服务器地址不是本地,而是在虚拟机上或者在某个服务器上, 在传路径想new 一个File时候 ,绝对不能用java.io.File类的,因为它只能new 路径 是本地电脑上的 这时候需要用org.apache.commons.net.ftp.FTPFile类 来new 想要下载的文件。!!! 其次就是 如果服务器是linux系统 ,它和windows是不一样的,需要加上
ftp下载指定文件
1、想做个自动更新。需要从服务器下载需要更新的文件来替换本地的文件。rn2、看网上使用HttpWebRequest和HttpWebResponse可是他们好像下载的是网页,我无法控制我要下载的文件。rn3、还有两个进度条,一个是当前文件下载进度。一个是总进度。rn4、我想用webClient来实现。暂时不想用多线程和异步,因为还不会使用。就用最简单的最原始的方法先实现功能就行。rn5、高手请告诉我如何控制需要下载的文件,还有如何替换本地文件???rn[url=http://blog.csdn.net/kevonz/archive/2009/12/25/5078432.aspx][/url]此贴看过,没有实现,不知道为什么。
如何下载FTP文件?
以前老是以为这样可以下载FTP文件,试验了一下,小点的倒可以,大了就不行,最多32KB rnrn
下载ftp文件
asp.net怎么通过一个FTP地址,下载该地址的文件。注意,不想通过下载工具。我用window.open(地址)后,会弹出迅雷来下载,但是,我如果不装迅雷,结果就成空白页了,有没有办法,让他用系统的来下载rnrn急,在线等,工作时间要到了,要交任务啊。刚来三天。帮帮忙@!
ftp 下载exe文件
从ftp下载 exe文件必须得用二进制模式下载,设置:request.UseBinary = true;下载如果用streamreader接的话,exe文件不可用,并且部分文件会变大,但是文本文件正常。rn如果用BinaryReader 接数据,代码如下rn[code=C#]//获得文件的内容rn private void getFileContent(string str1)rn rn FtpWebRequest request = (FtpWebRequest)WebRequest.Create(@"ftp://192.168.0.1/测试/" + projectName + str1);rn rn request.KeepAlive = false;rnrn request.Method = WebRequestMethods.Ftp.DownloadFile;rnrn request.Credentials = new NetworkCredential("anonymous", "");rnrn //注意: 多次调用 GetResponse 会返回相同的响应对象;该请求不会重新发出。rn request.EnableSsl = false;rn request.UseBinary = true;rn FtpWebResponse response = (FtpWebResponse)request.GetResponse();rn Stream responseStream = response.GetResponseStream();rn FileStream fw = new FileStream(@"C:\Documents and Settings\Administrator\桌面\dufei\阿瓦提client"+str1,FileMode.Create);rn BinaryReader reader = new BinaryReader(responseStream);rn BinaryWriter bw = new BinaryWriter(fw);rn byte fileContext;rn reader.BaseStream.Seek(0, SeekOrigin.Begin);rn bw.BaseStream.Seek(0, SeekOrigin.End);rnrn while (reader.BaseStream.Position < reader.BaseStream.Length)rn rn fileContext = reader.ReadByte(); //按照字节读取文件rn bw.Write(fileContext); //写入文件rn rn rn reader.Close();rnrn response.Close();rn rnrnrnrn[/code]rn reader.BaseStream.Seek(0, SeekOrigin.Begin);处rn会报 “此流不支持查找操作“的异常rn Stream responseStream = response.GetResponseStream();responseStream 的length也会报Length = “responseStream.Length”引发了“System.NotSupportedException”类型的异常。rn
android下载FTP的文件
android下载FTP的文件,支持Windows FTP站点。
java使用FTP实现文件上传与下载
文件服务器选择的是linux,如果只需要上传与下载只需要安装Vsftpd,如果想通过http访问图片,则可以选择安装 Nginx提供http服务。 主要用到的jar包为: 代码如下 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java....
下载FTP文件的帮助类
下载FTP文件的帮助类,DownloadFTPFile可以节省不少设置FTP特性的代码
ftp文件打包下载
要用java 从ftp上下载文件夹到本地。rn需要先压缩文件夹下载到本地。。。。rnrn我用的是org.apache.commons.net.ftprn压缩也知道怎么压缩。只是不知道怎么压缩服务器上的文件。。。请指点
浏览器下载ftp文件
1,浏览器下载ftp文件 一般下载ftp文件都使用ftp客户端工具,这样能更好的保证下载的速度和安全,也可以使用我的电脑,在地址栏输入ftp下载地址实现下载功能,只是相对工具来说这种方法不能操作较大的文件,可能会中断超时,一般建议使用工具。 当今随着web的发展,很多网站都需要在浏览器中直接提供ftp文件下载。大多数浏览器也在不同程度上支持ftp协议,可以通过ftp://usernam...
FTP文件的下载问题
一直想写一个从客户端连接至FTP服务器下载某文件的程序.现在输出文件内容可以了,但是实现下载...受困了:(rn 我的思路是将该FTP上欲下载的文件长度读出,再写到本地磁盘.rnimport java.net.*;rnimport java.io.*;rnclass ftp_exrn public static void main(String[] args)rn tryrn byte[] data=new byte[1024];rn URL url=new URL("ftp://aaa:aaa123@192.168.31.27/a/b.txt");rn InputStream urlc=url.openStream();rn URLConnection uc=url.openConnection();rn int contentLength=uc.getContentLength();rn System.out.println("contentLength="+contentLength);rn String filename=url.getFile();rn filename=filename.substring(filename.lastIndexOf('/'));rn System.out.println("文件名="+filename);rn FileOutputStream fout=new FileOutputStream(filename);rn rn fout.write(data);rn fout.flush();rn fout.close();rn rn urlc.close();rn rn catch(Exception e)rn System.err.println("err!");rn rn rnrn 本想采用这种类似从网页上下载文件的方法来获取FTP文件的长度的方法,但这里contentLength的值输出却为-1,导致后面的write(data)不知道该怎么来实现了:(rn 两点请求帮助:1是如何获取FTP文件的长度?2是如果我的思路有错,应采用何种思路来正确获取FTP服务器上的某文件?rnrn
java操作ftp下载
java通过ftp远程下载文件,已经自己使用,稳定,实现了文件夹递归下载。
java 编写ftp下载
下载必须要定义好文件名,如何改为下载的时候,弹出“打开”、“保存”、“取消”的对话框,怎么改呢?请教高手指教。rn 这是我写的:rn ftpClient = new FtpClient();rn ftpClient.openServer(server); rn ftpClient.login(user, password); rn ftpClient.binary();rn TelnetInputStream is=ftpClient.get(filename);rn rn File file_out=new File("d:/1.doc");//输出文件名,要改为自定义,怎么改呢? rn FileOutputStream os=new FileOutputStream(file_out);rn byte[] bytes=new byte[1024];rn int c;rn while ((c=is.read(bytes))!=-1) rn os.write(bytes,0,c);rn rn is.close();rn os.close();rn ftpClient.closeServer();rn
JAVA实现FTP下载
使用配置连接ORACLE数据库,根据传入参数(请求号)获取在服务器文件地址,进行FTP下载文件
java FTP 下载
一个关于Java FTP下载的多线程软件,根据配置文件去下载,对电脑的配置要求高
java ftp下载
java ftp文件下载。要注意传送模式(此例子是被动模式)
高效的java ftp下载
public static boolean uploadToFtp(String url,int port,String username,String passwd, String path,String fileName,InputStream inputStream) throws IOException{ boolean flag=false; FTPClient ftp=new F
java ftp 下载操作
从ftp服务器下载文件 FTP服务器端口 FTP登陆账号 登陆密码 FTP服务器上的相对路径 要下载的文件名 下载后保存到本地的路劲
java ftp的上传和下载
免费发给大家使用,能够上传文件到ftp服务器,和从ftp服务器下载文件。.
java ftp上传和下载
看了很多别人写的java连接ftp服务器的上传和下载,都没有能够实现的需要的功能。自己写了一个连接ftp服务器,并实现定时上传和下载。已经实现,正在使用,很好用的。
java FTP 下载器
纯java开发的可以用了下载各种文件,类似FTP公具
Java ftp 文件上传和下载
package com.iflytek.ftp.socket;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.i
FTP下载好东东FTP下载好东东
很好的开源邮件服务器FTP下载好东东FTP下载好东东
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法