java链接FTP实现上传和下载
FtpUtil.java
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.SocketException;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.apache.commons.net.ftp.FTP;
- import org.apache.commons.net.ftp.FTPClient;
- import org.apache.commons.net.ftp.FTPReply;
- public class FtpUtil {
- private final static Log logger = LogFactory.getLog(FtpUtil.class);
- /**
- * 获取FTPClient对象
- *
- * @param ftpHost
- * FTP主机服务器
- * @param ftpPassword
- * FTP 登录密码
- * @param ftpUserName
- * FTP登录用户名
- * @param ftpPort
- * FTP端口 默认为21
- * @return
- */
- public static FTPClient getFTPClient(String ftpHost, String ftpUserName,
- String ftpPassword, int ftpPort) {
- FTPClient ftpClient = new FTPClient();
- try {
- ftpClient = new FTPClient();
- ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器
- ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器
- if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
- logger.info("未连接到FTP,用户名或密码错误。");
- ftpClient.disconnect();
- } else {
- logger.info("FTP连接成功。");
- }
- } catch (SocketException e) {
- e.printStackTrace();
- logger.info("FTP的IP地址可能错误,请正确配置。");
- } catch (IOException e) {
- e.printStackTrace();
- logger.info("FTP的端口错误,请正确配置。");
- }
- return ftpClient;
- }
- /**
- * 下载文件
- *
- * @param ftpHost ftp服务器地址
- * @param ftpUserName anonymous匿名用户登录,不需要密码。administrator指定用户登录
- * @param ftpPassword 指定用户密码
- * @param ftpPort ftp服务员器端口号
- * @param ftpPath ftp文件存放物理路径
- * @param fileName 文件路径
- * @param input 文件输入流,即从本地服务器读取文件的IO输入流
- */
- public static void downloadFile(String ftpHost, String ftpUserName,
- String ftpPassword, int ftpPort, String ftpPath, String localPath,
- String fileName) {
- FTPClient ftpClient = null;
- try {
- ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
- ftpClient.setControlEncoding("UTF-8"); // 中文支持
- ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
- ftpClient.enterLocalPassiveMode();
- ftpClient.changeWorkingDirectory(ftpPath);
- File localFile = new File(localPath + File.separatorChar + fileName);
- OutputStream os = new FileOutputStream(localFile);
- ftpClient.retrieveFile(fileName, os);
- os.close();
- ftpClient.logout();
- } catch (FileNotFoundException e) {
- logger.error("没有找到" + ftpPath + "文件");
- e.printStackTrace();
- } catch (SocketException e) {
- logger.error("连接FTP失败.");
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- logger.error("文件读取错误。");
- e.printStackTrace();
- }
- }
- /**
- * 上传文件
- *
- * @param ftpHost ftp服务器地址
- * @param ftpUserName anonymous匿名用户登录,不需要密码。administrator指定用户登录
- * @param ftpPassword 指定用户密码
- * @param ftpPort ftp服务员器端口号
- * @param ftpPath ftp文件存放物理路径
- * @param fileName 文件路径
- * @param input 文件输入流,即从本地服务器读取文件的IO输入流
- */
- public static void uploadFile(String ftpHost, String ftpUserName,
- String ftpPassword, int ftpPort, String ftpPath,
- String fileName,InputStream input){
- FTPClient ftp=null;
- try {
- ftp=getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
- ftp.changeWorkingDirectory(ftpPath);
- ftp.setFileType(FTP.BINARY_FILE_TYPE);
- fileName=new String(fileName.getBytes("GBK"),"iso-8859-1");
- ftp.storeFile(fileName, input);
- input.close();
- ftp.logout();
- System.out.println("upload succes!");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
FtpTest.java
- import java.io.File;
- import java.io.FileInputStream;
- import org.junit.Test;
- public class FtpTest {
- String ftpHost= "192.168.xx.xx"; //ftp服务器地址
- int ftpPort = 21;//ftp服务员器端口号
- String ftpUserName = "administrator";//anonymous匿名用户登录,不需要密码。administrator指定用户登录
- String ftpPassword = "888888";//指定用户密码
- String ftpPath = "ftpdir/"; //ftp文件存放物理路径
- String filePath=""; //文件路径
- String fileName="";//文件名称
- @Test
- public void test() throws Exception {
- filePath="E:/download";
- fileName="11.txt";
- FtpUtil.downloadFile(ftpHost, ftpUserName, ftpPassword, ftpPort,
- ftpPath, filePath, fileName);
- filePath="E:/upload";
- fileName="upload.txt";
- FileInputStream input=new FileInputStream(new File(filePath+File.separatorChar+fileName));
- FtpUtil.uploadFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, fileName, input);
- }
- }
java链接FTP实现上传和下载的更多相关文章
- Java实现FTP文件上传与下载
实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cl ...
- Java 实现ftp 文件上传、下载和删除
本文利用apache ftp工具实现文件的上传下载和删除.具体如下: 1.下载相应的jar包 commons-net-1.4.1.jar 2.实现代码如下: public class FtpUtils ...
- java客户端文件的上传和下载
java客户端文件的上传和下载 //上传 public JTable upload(String id){ JTable table=new JTable(); System.out.println( ...
- FTP文件上传和下载(JAVA)
前文 1.使用FTP的方式进行文件的上传和下载(非SFTP) 2.本人手打,亲测,代码是最简单的,清晰易懂,需要的同学请结合自己的实际添加业务逻辑 2.第三方的jar包:import org.apac ...
- java操作vaftpd实现上传、下载
1.配置文件conf/vsftpd.properties (我是单独写了一个配置文件,你可以直接写在application中) vsftpd.ip=192.168.**.** vsftpd.user= ...
- java实现文件的上传和下载
1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...
- Java中文件的上传与下载
文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileupload实现文件上传,下载 [u ...
- java web(四)文件上传与下载
一.文件上传原理 1.在TCP/IP中,最早出现的文件上传机制是FTP ,它是将文件由客户端发送到服务器的标准机制:但是在jsp使用过程中不能使用FTP方法上传文件,这是由jsp运行机制所决定. 通 ...
- linux ftp批量上传和下载文件
一.登录ftp 输入 ftp 192.168.1.111 输入用户名:ftpuser 输入密码:aaa123 二.转到目标目录 输入:cd test ----test为文件夹 三.批量上传 输 ...
随机推荐
- java IO切割流合并流
切割流,将一个较大的文件,切割成多个小文件存储
- LwIP raw api下使用tcp keep alive
// The following code is implemented after tcp_new() or in tcp_connected call back... xxx_connected( ...
- centos7安装Hive2.3.0
1.下载Hive2.3.0 wget http://mirror.bit.edu.cn/apache/hive/hive-2.3.0/apache-hive-2.3.0-bin.tar.gz 2.解压 ...
- 通过 CeSi + Supervisor 可视化集中管理服务器节点进程
通过 CeSi + Supervisor 可视化集中管理服务器节点进程 简介 Supervisor 的安装及基本使用 1. 安装 2. 基本使用 2.1 启动 supervisor 2.2 Supe ...
- Spring中的后置处理器BeanPostProcessor讲解
Spring中提供了很多PostProcessor供开发者进行拓展,例如:BeanPostProcessor.BeanFactoryPostProcessor.BeanValidationPostPr ...
- 汇编,浮点运算符,fldpi,fmul等指令说明.
协处理器指令系统 协处理器共有68条不同的指令,汇编程序在遇到协处理器指令助记符时,都会将其转换成机器语言的ESC指令,ESC指令代表了协处理器的操作码. 协处理器指令在执行过程中,需要访问内存单元时 ...
- 用Keras搭建神经网络 简单模版(二)——Classifier分类(手写数字识别)
# -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...
- [UE4]C++ STL总结
STL概述 STL (Standard Template Library, 标准模板库) 是惠普实验室开发的一系列软件的统称.主要核心分为三大部分:容器(container).算法(algorithm ...
- javascript继承之组合继承(三)
function Father(name) { this.name = name; } Father.prototype.say = function () { return this.name; } ...
- 【Python编程:从入门到实践】chapter10 文件和异常
chapter10 文件和异常 10.1 从文件中读取数据 10.1.1 读取整个文件 with open("pi.txt") as file_object: contents = ...