`
圣米格利托
  • 浏览: 58365 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java实现ftp登录上传下载关闭等操作【转】

    博客分类:
  • JAVA
阅读更多

 

我们采用的apache封装的FTP,

 

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

import org.apache.commons.net.ftp.FTPClientConfig;

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

 

这是apache封装FTP相关的引入

 

====================================================

 

类名为:FtpUtil

 

 

private FTPClient ftpClient = null; 
 private String hostname;
 private int port;
 private String username;
 private String password;
 private String remoteDir;
 //构造方法

public FtpUtil(String hostname, int port, String username, String password, String remoteDir){
  this.hostname = hostname;
  this.port = port;
  this.username = username;
  this.password = password;
  this.remoteDir = remoteDir;
  if(remoteDir==null) {
   remoteDir = "/";
  }
 }

//登录

 /**
  * FTP登陆
  * @throws IOException 
  */
 public void login() throws Exception{
  ftpClient = new FTPClient();
  ftpClient.configure(getFTPClientConfig());
  ftpClient.setDefaultPort(port);
  ftpClient.setControlEncoding("UTF-8");
  ftpClient.connect(hostname);
  if(!ftpClient.login(username, password)){
   throw new Exception("FTP登陆失败,请检测登陆用户名和密码是否正确!");
  }
  ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
  ftpClient.changeWorkingDirectory(remoteDir);
 }

 


 /**
  * 得到配置
  * @return
  */
 private FTPClientConfig getFTPClientConfig() {
  // 创建配置对象
  FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
  conf.setServerLanguageCode("zh");
  return conf;
 }

 

/**
  * 关闭FTP服务器
  */
 public void closeServer(){
  try{
   if(ftpClient!=null){
    ftpClient.logout();
    ftpClient.disconnect();
   }
  }catch(IOException e){
   e.printStackTrace();
  }
 }

 

/**
  * 链接是否已经打开
  * @return
  */
 public boolean serverIsOpen(){
  if(ftpClient==null){
   return false;
  }
  return !ftpClient.isConnected();
 }
 
 
 /**
  * 列表FTP文件
  * @param regEx
  * @return
  */
 public String[] listFiles(String regEx){
  String[] names;
  try{
   names = ftpClient.listNames(regEx);
   if(names == null) return new String[0];
   return names;
  }catch(IOException e){
   e.printStackTrace();
  }
  return new String[0];
 }

 

/**
  * 取得FTP操作类的句柄
  * @return
  */
 public FTPClient getFtpClient() {
  return ftpClient;
 }

 

/**
  * 上传
  * @throws Exception
  */
 public boolean upload(String localFilePath, String remoteFilePath)throws Exception {
  boolean state = false;
  File localFile = new File(localFilePath);
  if(!localFile.isFile()||localFile.length()==0){
   return state;
  }
  FileInputStream localIn = new FileInputStream(localFile);
  state = this.upload(localIn, remoteFilePath);
  localIn.close();
  return state;
 }
 
 /**
  * 上传
  * @throws Exception
  */
 public boolean upload(InputStream localIn, String remoteFilePath)throws Exception {
  this.createDir(new File(remoteFilePath).getParent());
  boolean result = ftpClient.storeFile(remoteFilePath, localIn);
  return result;
 }
 
 /**
  * 是否存在FTP目录
  * @param dir
  * @param ftpClient
  * @return
  */
 public boolean isDirExist(String dir) {
  try {
   int retCode = ftpClient.cwd(dir);
   return FTPReply.isPositiveCompletion(retCode);
  } catch (Exception e) {
   return false;
  }
 }
 
 /**
  * 创建FTP多级目录
  * @param remoteFilePath
  * @throws IOException 
  */
 public void createDir(String dir) throws IOException{
  if(!isDirExist(dir)){
   File file = new File(dir);
   this.createDir(file.getParent());
   ftpClient.makeDirectory(dir);
  }
 }
 
 /**
  * 删除文件
  * @param remoteFilePath
  */
 public boolean delFile(String remoteFilePath) {
  try {
   return ftpClient.deleteFile(remoteFilePath);
  } catch (IOException e) {
   e.printStackTrace();
  }
  return false;
 }
 
 
 /**
  * 下载
  * @throws Exception
  */
 public void download(String localFilePath, String remoteFilePath)throws Exception {
   OutputStream localOut = new FileOutputStream(localFilePath);
   this.download(localOut, remoteFilePath);
   localOut.close();
 }
 
 /**
  * 下载
  * @throws Exception
  */
 public void download(OutputStream localOut, String remoteFilePath)throws Exception {
  boolean result = ftpClient.retrieveFile(remoteFilePath, localOut);
  if (!result) {
   throw new Exception("文件下载失败!");
  }
 }
分享到:
评论

相关推荐

    用JAVA实现Ftp文件上传下载

    在`TestFtpUpload`文件中,可以编写单元测试或集成测试来验证FTP上传和下载功能。例如,你可以创建一个测试类`FtpOperationsTest`,包含如下方法: ```java import org.junit.jupiter.api.Test; import org.apache....

    JAVA实现ftp上传,下载

    在Java中实现FTP上传和下载,我们可以利用Apache Commons Net库,它提供了一系列的FTP客户端API,方便我们进行文件操作。以下是对这个主题的详细讲解: 一、Apache Commons Net库介绍 Apache Commons Net是Apache...

    Java实现FTP上传与下载

    这篇博客“Java实现FTP上传与下载”可能详细介绍了如何利用Java来实现FTP客户端的功能,包括文件的上传和下载。这里我们将深入探讨Java中实现FTP操作的核心知识点。 首先,Java通过`commons-net`库提供了对FTP的...

    JAVA实现简单的对FTP上传与下载

    总的来说,使用Java实现FTP上传和下载涉及网络通信、文件操作和错误处理等多个方面的知识。通过"ftpLoadDown.jar"库,我们可以简化这个过程,使得开发者可以专注于业务逻辑,而无需关心底层的FTP协议细节。在实际...

    java实现ftp自动上传文件

    Java 实现 FTP 自动上传文件是一项常见的任务,尤其在自动化部署、数据同步...总的来说,通过Java实现FTP自动上传文件涉及到网络通信、文件操作、日志处理等多个方面,理解这些概念对于Java开发者来说是非常重要的。

    java 实现ftp上传下载

    总结来说,Java实现FTP上传下载涉及连接管理、文件操作、多线程处理、异常处理等多个方面。使用Apache Commons Net库能简化这些操作,但正确地处理细节和异常情况仍然至关重要。通过理解和实践这些知识点,你将能够...

    java实现ftp的所有操作

    本项目提供了一套完整的Java实现FTP操作的代码示例,包括上传、下载、删除服务器上的指定文件以及断点续传功能。以下是对这些功能的详细解释: 1. **FTP连接与登录**: 在进行任何FTP操作之前,首先需要建立一个...

    java实现FTP服务器

    3. **文件操作**:FTP支持文件的打开、关闭、上传(put)、下载(get)等操作。 #### 构建Java FTP服务器的核心步骤 构建Java FTP服务器涉及到几个关键步骤: 1. **初始化服务器**:设置服务器监听的端口,通常为...

    Java实现FTP的上传下载功能

    总的来说,Java实现FTP功能涉及到网络通信、文件I/O以及GUI交互等多个方面,通过适当的库支持可以高效地完成文件的上传和下载任务。在实际开发中,还需要考虑错误处理、安全性、性能优化等更多因素。

    java实现ftp上传和下载文件功能.

    在Java中实现FTP(文件传输协议)上传和下载文件功能,通常会使用Apache Commons Net库。这个库提供了FTPClient类,使得与FTP服务器交互变得简单。以下是对代码中涉及的知识点的详细解释: 1. **Apache Commons Net...

    java写的ftp下载上传定时监控

    Java作为多平台支持的编程语言,提供了丰富的库和工具来实现FTP功能,包括下载、上传文件以及定时监控等操作。本篇文章将深入探讨如何使用Java进行FTP文件传输,并涉及自动解压和压缩的功能。 首先,让我们关注Java...

    JAVA实现FTP下载

    在Java中,我们可以使用Apache Commons Net库来处理FTP相关操作,如连接、登录、上传和下载文件等。 1. **Apache Commons Net库**:这是Java开发人员常用的FTP客户端库,提供了丰富的API来处理FTP操作。要使用它,...

    java实现文件上传到ftp

    本教程将详细介绍如何使用Java实现文件上传到FTP服务器,这适用于初学者熟悉FTP客户端编程的基础概念。 首先,我们要了解FTP的基本工作原理。FTP允许客户端连接到服务器,发送文件,接收文件,或者列出服务器上的...

    Java实现ftp上传

    本文将详细介绍如何使用Java实现FTP上传功能,并探讨相关知识点。 首先,要进行FTP操作,我们需要一个Java FTP客户端库。Java标准库并不直接支持FTP,但提供了`java.net.Socket`类,可以通过它构建低级别的FTP连接...

    java ftp断点上传和下载

    FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。断点续传是FTP的一个重要特性,允许用户在文件...了解这些知识点将使你能够高效地实现在Java环境中进行FTP文件的断点续传操作。

    用Java实现FTP批量大文件上传下载.zip

    以下是关于使用Java实现FTP批量大文件上传下载的相关知识点: 1. **FTP基础知识**: - FTP是File Transfer Protocol的缩写,它允许用户在Internet上发送和接收文件。 - FTP使用TCP作为传输层协议,并且基于客户-...

    java多线程ftp 上传下载

    总结来说,Java中的多线程FTP上传和下载涉及网络通信、多线程编程以及错误处理等多个方面。Apache Commons Net库提供了便利的API,使得开发者可以高效地实现这些功能。在实践中,要注意线程安全和异常处理,以确保...

Global site tag (gtag.js) - Google Analytics