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

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

0

4个回答

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

1
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后都要加
大约一年之前 回复

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

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

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

0

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;
}
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ftp上传文件,下载文件,重命名文件
ftp上传文件,下载文件,重命名文件.
Apache FTP文件上传、下载、修改文件名、删除
前言:Apache FTP 是应用比较广泛的FTP上传ke
java中ftp中文文件名问题
在aix系统中使用java程序到另一个aix服务器上ftp下载一个文件名为中文的,下载下来后文件的大小为0,麻烦各位高手指导一下,谢谢!!
解决FTP服务器上中文名文件下载后为空的问题
有台服务器,编码为GBK,发现服务器上的中文文件下载后文件大小为0,打开为空白。 经调查,是文件名编码格式不对导致,对于中文情况,使用FTPClient时编码格式需使用ISO-8859-1 具体代码:package com.neusoft.ftptest; import java.io.File; import java.io.FileOutputStream; import java.
使用apache的FTPClient修改FTP服务器上的文件名称
使用FTPClient类的rename方法修改文件的名称时,修改不成功。 最终问题定位在没有权限对文件夹修改,对文件夹设置写的权限后就行了。
ftp上传文件,下载文件,删除文件,改文件名,创建文件等
在网上找了好多关于ftp技术的资料,基本都是封装的类,没有解决方案,理出一个可运行的界面,实现ftp连接,并上传文件,下载文件,获取ftp文件夹中文件列表。其中还有一些对ftp文件的删除、修改文件夹名称,创建文件夹,获取文件明细等,需要自己调试。有一个word文档,在win10下如何开启ftp,正在研究如何使用C#代码,实现一键开启ftp...
使用curl下载上传ftp
curl可以在shell下轻松上传下载ftp上的文件,相比ftp命令更具有优势,因为它能在单命令条件下,下载或者上传一个ftp文件,甚至可以删除文件。 下面看实例: 列出ftp服务器上的目录列表: curl ftp://malu.me/ --user name:passwd curl ftp://malu.me/ –u name:passwd    #简洁写法 c
一次因为文件名开头包含空格而导致FTP文件一直无法下载的悲剧!
最近负责公司研究新的多渠道打包方案,之前的打包方案太慢了,因此采用了美团的Android Signature V2 Scheme签名下的新一代渠道包打包神器 方案进行了多渠道打包。但是由于马虎,在配置多渠道打包定制渠道包的APK的文件名称的时候,在apk文件名称签名多敲了一个空格,因此出出现了FTP文件一直无法下载的悲剧,下面具体描述一下。在Jenkins成功的时候多渠道包之后,会转移编译好的apk
利用FTPClient获取ftp服务器上面的文件夹及文件夹里面的文件名称
读取ftp服务器上面的文件夹以及子文件名称,只需要获取名称,并不从ftp上面下载 package com.pd.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import ja...
使用FPT上传下载文件和解决中文名文件乱码问题
项目中从ftp服务器下载上传文件是一个经常用到的,下面是个人在用到的时候的一些学习记录。 为了方便,我在本地装了FileZilla Server,在本地搭建了一个ftp服务器,具体如何做就不墨迹了。 先看一个简单的代码(转自别人的) import org.apache.commons.io.IOUtils; import org.apache.commons.net.ftp.FTPClient;
java代码实现从ftp上下载文件
用java代码实现从ftp上下载文件: 文件名由 字母 + 日期(数字:20171231) + 后缀 组成 例如:H100.helloworld.20171231.dat.gz 字母是固定的,后缀是固定的,日期不是固定的,在不传送文件名的情况下,如何下载到此文件?
ftp文件过滤
package com.ibm.bmcc.moaportal.util; import java.text.ParseException; import java.util.Calendar; import java.util.Date; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.F
FTP下载文件中文名乱码FTP访问
tomcat字符集编码格式没统一, 修改配置文件server.xml文件   添加URIEncoding=&quot;utf-8&quot;   &amp;lt;Connector port=&quot;8088&quot; protocol=&quot;HTTP/1.1&quot;  maxThreads=&quot;150&quot; connectionTimeout=&quot;20000&quot;  redirectPort=&quot;8443&quot;     URIEncoding=&
python3(不能有其他的下载工作进行,从一个fTP的路径下载文件后并修改文件名字)
python3(不能有其他的下载工作进行,从一个fTP的路径下载文件后并修改文件名字)
FTP远程批量下载文件并选出文件名在时间段内的文件,在进行配置定时处理
FTP:文件传输协议,常用于远程服务器的文件上传和下载 下面用例子给大家展示一下ftp的批量下载和删除,代码如下:  1.先配置远程服务器的ip地址和端口,以及用户名、密码、下载到本地的路径、备份文件路径等等    2.判断本地下载路径是否存在,不存在进行新增本地下载目录    3.开始连接远程服务器批量下载文件名以VAC_NAME和spID开头,并以&quot;.req&quot;结尾的多个文件  
python修改FTP服务器上的文件名
#-*- coding:utf-8 -*-#修改ftp服务器上的文件名from ftplib import FTPdef ftpoperate(ip,port,username,passwd,path):    #获取ftp服务器某一文件夹下的所有文件名    ftp = FTP()    ftp.set_debuglevel(0)    ftp.connect(ip,port)    ftp.l...
Java中使用FTPClient向FTP服务器上传文件、下载文件
一、Java中使用FTPClient向FTP服务器上传文件、下载文件 本博文转自:http://www.linuxidc.com/Linux/2012-11/74418.htm 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。 所用
java版ftp简易客户端(可以获取文件的名称及文件大小)
package com.ccb.ftp; import java.io.IOException; import java.net.SocketException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.com...
ftp 下载文件到 客户端输出流 文件名却是download
ftp 下载文件到 客户端输出流 文件名却是download 为下载的文件进行命名: response 设置如下: response.setContentType("application/x-msdownload");             response.setCharacterEncoding("UTF-8");             response.setHeader("
FTPClient上传和下载文件,中文乱码问题解决
使用类:            org.apache.commons.net.ftp.FTPClient    问题描述:            创建中文目录、上传中文文件名时,目录名及文件名中的中文显示乱码    解决方法:            在网上Google了一些资料, FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码。
Java检测指定FTP目录下的文件名
本示例简单的实现了一个用Java代码来访问FTP,根据指定FTP的目录,访问这个路径下面的Ftp的文件,取出这个目录下面所有文件的文件名保存到一个Map中,最后根据系统时间和文件生成时间做对比,得出该日是否正确生成规定的文件到服务器
Java-ftp支持中文目录、文件名的 上传、删除文件
一、问题 描述:Java中FTPClient上传中文目录、中文文件名乱码问题解决方法 原因:FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码。 解决方案:name=new String(name.getBytes("GBK"),"iso-8859-1"); 使用这个转码 二、ftp 上传代码 package me.grass.net; impor
从windows ftp上传utf-8编码的linux,中文文件名乱码问题解决办法
windows缺省字符集是GBK,在ftp上传到linux文件时,中文文件名总是显示乱码,原因是此linux字符集为utf-8,无论是ftp还是scp,都不能自动解决编码不一致问题。 经查找,解决办法如下: 在linux下安装convmv命令,采用 [code=&quot;java&quot;]convmv -f gbk -t utf-8 --notest -r ./ [/code] 即可。 注意:为了以防...
FTP文件名显示和传输问题
    起因:闲来无事,想用FTP把自己在虚拟机写的代码备份一下。    环境: Ubuntu下的vsftpd,Windows下 是FileZila    经过:突然发现显示结果竟然是这样的!试了很多方法,修改了vsftpd的配置文件也不行.就只剩下电脑客户端没改了.改完之后文件名就显示正常了总结:windows默认编码为GBK Ubuntu默认编码UTF-8,编码不兼容导致文件名显示出错,文件传...
java中ftp上传、下载、重命名、删除功能实现
与尼尔森数据对接使用了ftp技术,特别留下l
python从FTP上传下载文件
1前言     很久不用python了,也就是回忆下python怎么使用。。。。都忘记了基本的语法了,再不试试,我都忘光了,。。。哈哈     主要用来测试下FTP服务器的设置,从而使得在传输备份数据的时候,可以控制传输的速度。     在使用下载的或者上传的时候,均是使用匿名用户来进行测试的,但是在生产环境中,一般都是建一个系统用户,然后不能登录,也就是shell的类型为/sbin
FTP获取中文文件名乱码问题
问题描述:       在服务器上用FileZilla Server建了个FTP服务器,本机程序中使用 apache.commons.net 包中的 ftp.FTPClient 类上传下载文件,文件上传下载后的文件名的显示都木有问题,就是在程序中使用listNames(),或者listFiles()再获取文件名,中文的文件名就会乱码,就像“???.png”这个样子。 解决方法:
FTPClient实现ftp的上传下载(包含中文文件名和中文路径问题)
整理一个ftp上传下载的工具类,转码问题经测试都已经很好的解决,我这里用的ftp为Windows系统下,Linux下的ftp操作写法不一样,下次有用到再整理:FtpUtil jar commons-net-3.3.jar
Java中FTP文件上传下载中文文件乱码问题
FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码。 上传时:  将中文的目录或文件名转为iso-8859-1编码的字符。参考代码:                   String name="目录名或文件名";                   name=new String(name.getBytes("GBK"),"iso-8859-
java ftp上传文件中,如何判断文件是否被打开
//获取文件夹下所有文件 File file = new File(localDirectory); //将获得的文件转换成数组 File[] array = file.listFiles(); List list = new ArrayList(); for(File tempFile : array)
关于FTP和Sftp上传文件和重命名文件
公司需求是写一个上传文件的页面,一开始用ftp的上传方法,但是没有成功;后来发现公司用的服务器是sftp协议的……而sftp的写法和ftp 的写法不一样。 下面记录这两种写法: 另外注意引入jar包:jsch.jar sftp的上传文件的写法: ///host:上传的 ip //// port 接口  ftp默认21,sftp:默认22 //username:登陆的用户
批处理实现增拷贝文件和增量上传文件到ftp服务器
1、实现从源文件夹筛选指定天数内修改文档,拷贝到目的文件夹。 2、将本地文件上传到指定的ftp服务器。      @echo off   rem 拷贝文件到中间文件夹  del /f /q /a D:\work\backup\data\*.*  rem @echo off  Rem 取5天之前的日期,取回放入变量nowdate  echo wscript.echo date
Ftp 命令, 匹配文件 ,多文件下载
ftp 192.168.1.1 21 name  pwd cd /yyw/book/ ftp显示文件: dir 20171030* ftp下载文件:get一次只下载一个文件;mget一次可以下载多个文件,而且支持通配符,需要注意的是在mget的时侯,需要对每一个文件都选择y/n,如果想不交互的下载全部的文件,可以先用prompt命令关掉交互方式(关闭:prompt
通过cmd命令到ftp上批量下载文件
1、进入DOS命令:win+r,输入cmd 2、输入:ftp,回车 3、open IP地址 4、输入用户名,回车;输入密码,回车; 5、切换ftp服务器的目录,进入到要下载的目录下。 6、选择文件下载到的本地目录,lcd &quot;本地目录&quot; 7、输入&quot;prompt&quot;命令(打开交互模式),输入执行第二次则关闭。如交互打开,下载文件会 提示是否下载,若批量下载很麻烦,所以关闭交互。 8、mge...
java上传、下载、删除ftp文件
java上传、下载、删除ftp文件
Java 使用ftp的方式上传文件到linux,并实现删除,下载
连接条件:1.主机 2.端口(注意端口不是22,22为ssh默认端口,一般为21,或者20) 3.用户名和密码 一切准备就绪,执行代码发现执行失败报530错误,拒绝连接 错误分析: 用户名或者密码错误 linux没有安装ftp,或者ftp没有启动。ps -ef | grep ftp linux默认root用户没有权限 修改方式:1.vi /etc/vsftp
Java实现FTP文件上传、下载和删除的基本操作
1、FTPFTP是File Transfer Protocol(文件传输协议),顾名思义,就是专门用来传输文件的协议。FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。2、实例(1)目录结构(2)pom.xml&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/...
java使用ftp下载文件到本地(只是下载)
1.添加依赖         camel-ftp依赖与commons-net依赖两者取其中一个即可                      org.apache.camel             camel-ftp             2.13.2                               commons-net             commons-
FTP 文件上传下载/读取
用到的jar包: comments-net.jar 下载地址:http://download.csdn.net/detail/xuanjiewu/9838448 这里仅仅是对ftp工具类的简单使用,很多东西还不是很了解。当然学以致用,先用到这里吧。 [java] view plain copy  print? public class
FTPClient上传文件大小为0
问题原因一、FTP文件目录空间达到上限 二、网络策略变更造成,被防火墙拦截解决方案FTP协议有两种工作方式:PORT方式和PASV方式,默认为PORT方式,修改为PASV方式,目前问题解决。需要进一步观察,是否还有问题
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 ftp学习 java ftp java 学习

相似问题

1
目前使用华为4G模块-HUAWEI ME909s,需要获取FTP上的文件名
1
一台服务器上传目录和文件到另外一台ftp服务器上(注意是目录和文件)的shell脚本。
2
Win10安装的VMware中的Ubuntu系统上启动的ftp服务端程序无法被在其他机器上的ftp客户端连接上?
2
java通过FTPClinet获取文件的二进制字符串,多出一些东西
1
80端口被system占用?听说关闭IIS就可以了,关了IIS FTP是不是就不能用了?
1
怎么用java的ftp来获取某个文件夹下的部分文件?
0
通过Struts2下载ftp图片文件,图片花屏。不知道怎么回事
1
java使用ftp连接成功,可以上传文件,但是有时不能创建文件夹。
4
ftp传压缩包传一半报550错误?
1
unity 如何在带有密码的Ftp下载AB包
7
ftp服务器搭建好了为什么连不上?
5
FTP 文件夹错误 Windows 无法访问此文件夹
4
IDEA用ftp协议部署至远程tomcat的问题
3
一个php项目的代码已经上传到需要部署它的服务器了,怎么执行这个程序?
1
logback 打印出来的日志上传ftp显示程序被占用(贴的代码不重要,和网上代码是一样的)
2
ftp 登录时 530 Login incorrect. Login failed
4
在windows下使用bat文件进行ftp上传下载文件操作
7
windows服务器使用ftp://localhost 可以连接,使用ftp://ip地址 无法连接
1
一个关于使用autoit 从ftp下载文件的故事。。。。
3
关于linux系统FTP上传的文件读取权限问题