文档章节

liunx实现FTP下载功能

 良藥
发布于 2017/06/29 16:13
字数 436
阅读 2
收藏 0
点赞 0
评论 0

1.由于liunx服务器无法实现http协议的访问,所以无法直接读取视频,从而也无法运用httpurl实现爬虫抓取,所以百度整合了一个ftp下载的工具类,侵删。

package com.itsht.adapter.socket;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

public class Ftpdownload {
    /**
     * Description: 从FTP服务器下载文件
     * 
     * @Version. Jul , :: PM by 崔红保(cuihongbao@d-heaven.com)创建
     * @param url
     *            FTP服务器hostname
     * @param port
     *            FTP服务器端口
     * @param username
     *            FTP登录账号
     * @param password
     *            FTP登录密码
     * @param remotePath
     *            FTP服务器上的相对路径
     * @param fileName
     *            要下载的文件名
     * @param localPath
     *            下载后保存到本地的路径
     * @return
     */
    public static boolean downFile(String url, int port, String username,
            String password, String remotePath, String fileName,
            String localPath) {
        boolean success = false;
        FTPClient ftp = new FTPClient();
        try {
            int reply;
            ftp.connect(url, port);
            // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
            ftp.login(username, password);// 登录
            reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                return success;
            }
            ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
            FTPFile[] fs = ftp.listFiles();
            for (FTPFile ff : fs) {
                if (ff.getName().equals(fileName)) {
                    File localFile = new File(localPath + "/" + ff.getName());
                    OutputStream is = new FileOutputStream(localFile);
                    ftp.retrieveFile(ff.getName(), is);
                    is.close();
                }
            }
            ftp.logout();
            success = true;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (ftp.isConnected()) {
                try {
                    ftp.disconnect();
                } catch (IOException ioe) {
                }
            }
        }
        return success;
    }
    
    
    public static void main(String[] args) {
        String ftpurl = "ftp://road:road@192.168.9.53/detectdata/video/00/00/01.mp4";
        
        String url = ftpurl.substring(ftpurl.indexOf("@")+1,ftpurl.indexOf("/",ftpurl.indexOf("/",ftpurl.indexOf("/")+1)+1));
        int port = 21; 
        String username = ftpurl.substring(ftpurl.indexOf("/",ftpurl.indexOf("/")+1)+1,ftpurl.indexOf(":",ftpurl.indexOf(":")+1)); 
        String password = ftpurl.substring(ftpurl.indexOf(":",ftpurl.indexOf(":")+1)+1,ftpurl.indexOf("@")); 
        String remotePath = ftpurl.substring(ftpurl.indexOf("/",ftpurl.indexOf("/",ftpurl.indexOf("/")+1)+1),ftpurl.lastIndexOf("/")); 
        String fileName = ftpurl.substring(ftpurl.lastIndexOf("/")+1,ftpurl.length()); 
        String localPath = "";
        
        downFile(url, port, username, password, remotePath, fileName, localPath);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
}

 

===========================================================
jdk都有自带的包,所以无需下载工具包。

也有其他的方法实现下载但是会出现乱码或者数据量大的文件下载不了,一般ftp默认端口为21。

main方法是动态处理截取信息

 

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 1
码字总数 436
作品 0
程序员
想做一个不用FTP协议的文件传输软件,如何?

FTP协议要开多个端口,对防火墙等不太友好。 目前只想实现简单的功能,socket传输文件,简单的用户认证,目录列表,上传下载等等 分为server和client,基本考虑用C实现。 市面上都是ftp的,s...

难易
2012/04/27
507
8
Gow 0.6.0 发布,轻量级的 Cygwin 替代品

Gow 0.6.0 发布,这是 Gow 发布以来最大的一次更新,近乎所有的二进制文件都做了更新,同时也有很多新特性和 bug 修复。 Gow是一个轻量级的Cygwin替代软件, 它能做的事情是给Liunx软件提供一...

oschina
2012/09/11
1K
6
Cygwin的替代品--Gow

Gow是一个轻量级的Cygwin替代软件, 它能做的事情是给Liunx软件提供一个Windows系统上的运行环境。Gow是Gnu On Windows的缩写,它跟传统的具有相同功能的Cygwin软件比起来的特点是体积小,C...

匿名
2010/07/19
20.6K
3
Gow是Gnu On Windows的缩写:windows 运行Linux工具

ow是一个轻量级的Cygwin替代软件, 它能做的事情是给Liunx软件提供一个Windows系统上的运行环境。Gow是Gnu On Windows的缩写,它跟传统的具有相同功能的Cygwin软件比起来的特点是体积小,Cyg...

Oscarfff
2016/02/13
67
2
Gow 0.8.0 发布,Cygwin 的替代品

Gow 0.8.0 发布,此版本使 Gow 更容易更新;为 plink 添加了 ssh.bat 别名;修复了一个 tar libiconv-2.dll 问题;修复了版本名字问题;添加了 Nano 2.3.1;更新 PuTTY 到版本 0.63;重命名 ...

oschina
2014/02/17
4.1K
16
最新版Solr6.2.1安装记录

下载最新版Solr6.2.1`wget http://ftp.kddilabs.jp/infosystems/apache/lucene/solr/6.2.1/solr-6.2.1.tgz如果是windows,直接浏览器访问下载即可。 安装 1,解压上面下载完的tar包,到某个盘...

九劫散仙
2016/09/23
94
0
java ant编译问题

想把ant编译好的build文件夹ftp到liunx服务器,也不报错就是发送不过去,求大神指导

朝颜花开不败
2017/11/10
41
2
Mozilla Firefox 26 Beta 1 发布

按照快速更新版本的新传统,Mozilla Firefox 25.0正式版发布后,26版本就开始进入Beta频道,今天一大早Mozilla就将最新版放到了FTP上,根据MozWiki上的信息显示,Beta版本将持续更新,正式版...

oschina
2013/10/31
1K
20
kickstart(未完)

kickstart安装 参考文档:http://blog.oldboyedu.com/autoinstall-kickstart/ centos下载地址 http://mirror.symnds.com/distributions/CentOS-vault/6.5/isos/x86_64/ http://vault.centos......

fanzh565656
2016/10/21
0
0
每天一个linux命令(26):用SecureCRT来上传和下载文件

用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII、Xmodem、Zmodem。 文件传输协议: 文件传输...

长平狐
2013/06/17
81
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第八章:统一异常、数据校验处理

前言 在web应用中,请求处理时,出现异常是非常常见的。所以当应用出现各类异常时,进行异常的捕获或者二次处理(比如sql异常正常是不能外抛)是非常必要的,比如在开发对外api服务时,约定了响...

oKong
11分钟前
0
0
第二节:Bash编程易犯的错误

上一篇文章参见 第一节:Bash编程易犯的错误。 13. cat file | sed s/foo/bar/ > file 你不应该在一个管道中,从一个文件读的同时,再往相同的文件里面写,这样的后果是未知的。 你可以为此创...

问题终结者
18分钟前
0
0
mysql高级

一、存储引擎 InnoDB MyISAM 比较 二、数据类型 整型 浮点数 字符串 时间和日期 三、索引 索引分类 索引的优点 索引优化 B-Tree 和 B+Tree 原理 四、查询性能优化 五、切分 垂直切分 水平切分...

丁典
32分钟前
0
0
rsync通过同步服务、系统日志、screen工具

rsync通过后台服务同步 在远程主机中建立一个rsync服务器,在服务器上配置好rsync的各种应用,然后将本机作为rsync的一个客户端连接远程的rsync服务器。 首先在A机器上建立并且配置rsync的配...

黄昏残影
今天
3
0
Spring Cloud Gateway 接口文档聚合实现

在微服务架构下,通常每个微服务都会使用Swagger来管理我们的接口文档,当微服务越来越多,接口查找管理无形中要浪费我们不少时间,毕竟懒是程序员的美德。 由于swagger2暂时不支持webflux 走...

冷冷gg
今天
99
2
流利阅读笔记31-20180720待学习

克罗地亚:输了世界杯,却赢了全世界 雪梨 2018-07-20 1.今日导读 1998 年,年轻的克罗地亚国家队在法国世界杯给全世界留下了不可磨灭的印象,格子军团一举夺得了季军。4 年后,克罗地亚折戟...

aibinxiao
今天
3
0
OSChina 周五乱弹 —— 我们是食物链的最底层

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @温家成 :分享谢安琪的单曲《姿色份子》 《姿色份子》- 谢安琪 手机党少年们想听歌,请使劲儿戳(这里) @贪吃飒:最近p2p怎么了、半个月爆了...

小小编辑
今天
681
12
Android Studio 3.0 之后打包apk出现应用未安装问题

1、废话 出现这个问题的原因,并不是只有一个,而是有多个原因,不懂的估计会被搞得一头雾水,下面我列举的是我遇到的几种问题和网友遇到的几种问题,但不一定是全部,也有可能有些莫名其妙的...

她叫我小渝
今天
0
0
前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部