`
lzl836
  • 浏览: 13848 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java 的FTP操作(FTPClient)

 
阅读更多

 

package lis.co.jp.java.common;

import java.io.IOException;
import java.io.InputStream;

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

/**
 * FTP管理クラス
 *
 */
public class FtpUtil {
	

	
	public FTPClient ftpClient = null;

	/**
	 * コンストラクタ
	 */
	public FtpUtil() {

		ftpClient = new FTPClient();   
		
	}
	
	
	/** 
     * FTPサーバーの接続
     * @param hostname サーバー名 
     * @param port ポート 
     * @param username ユーザー名 
     * @param password パスワード 
     * @return 処理結果を真偽で返します。
     * @throws IOException 
     */ 
    public boolean connect(String hostname, String username,String password) throws IOException{   
        ftpClient.connect(hostname, 21);  
        ftpClient.enterLocalPassiveMode();
        ftpClient.setControlEncoding("SHIFT_JIS");   
        if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){   
            if(ftpClient.login(username, password)){   
                return true;   
            }   
        }   
        closeConnect();   
        return false;   
    }
	
	
	
	/**
	 * ファイル内容全てファイルを取得。
	 * @param dirPath ファイルパス
	 * @return ファイルリスト
	 * @throws IOException
	 */
	public FTPFile[] getListFile(String dirPath) throws IOException {
		
		FTPFile[] files = null;
		ftpClient.enterLocalPassiveMode();   
		ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
		
		dirPath = new String(dirPath.getBytes("SHIFT_JIS"),"ISO-8859-1");
		try {
        	
			files = ftpClient.listFiles(dirPath);
		} catch (IOException e) {
			
			e.printStackTrace();
		} 
		
		return files;
	}

	/**
	 * ファイルのバイナリデータを取得。
	 * @param filePath ファイルパス
	 * @return ファイルのバイナリデータ
	 * @throws IOException
	 */
	public InputStream getInputstream(String filePath) throws IOException {
		
	    InputStream in = null;
	    ftpClient.enterLocalPassiveMode();   
	    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
	    filePath = new String(filePath.getBytes("SHIFT_JIS"),"ISO-8859-1");
        try {

        	in = ftpClient.retrieveFileStream(filePath); 
        	
        	
		} catch (IOException e) {
			
			e.printStackTrace();
		} 
		
        return in;
	}
	
	/**
	 * 削除フォルダとフォルダ内のファイル
	 * @param dirPath フォルダのパス
	 * @return 処理結果を真偽で返します。
	 * @throws IOException
	 */
	public boolean deleteDirectory(String dirPath) throws IOException {
				
		boolean result = true;
		ftpClient.enterLocalPassiveMode();   
		dirPath = new String(dirPath.getBytes("SHIFT_JIS"),"ISO-8859-1");
		try {
			
			FTPFile[] files = ftpClient.listFiles(dirPath);
			
			for (int i = 0; i < files.length; i++) {
				FTPFile file = files[i];

				String name = file.getName();
				name = new String(name.getBytes("SHIFT_JIS"),"ISO-8859-1");
				if (file.isDirectory()) {
					result = deleteDirectory(dirPath + "\\" + name);
					if (!result) {
						break;
					}
				} else {
					result = ftpClient.deleteFile(dirPath + "\\" + name);
					if (!result) {
						break;
					}
				}
			}
			if (!result) {
				return false;
			}

			result = ftpClient.removeDirectory(dirPath);

		} catch (Exception e) {
			return false;
		} 
		return result;
		
	}
	
	/**
	 * FTPの接続を解放します。
	 * @throws IOException 
	 */
	public void closeConnect() throws IOException {
		if(ftpClient.isConnected()){   
            ftpClient.disconnect();   
        }   
	}

	/**
	 * バイナリデータを解放します。
	 * @param in
	 */
	public void close(InputStream in)  {
		try {
			in.close();
			ftpClient.completePendingCommand();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
ps:特别注意的是ftpClient.completePendingCommand();要写在in.close();之后,否则有可能出现reset的问题。


分享到:
评论

相关推荐

    sun.FtpClient,ftp4j.FTPClient,apache.FTPClient不同的方式操作FTP

    sun.net.ftp.FtpClient,it.sauronsoftware.ftp4j.FTPClient,org.apache.commons.net.ftp.FTPClient三种不同的方式操作FTP

    JavaFtpClient.rar_JAVAFTP_ftpclient

    总的来说,Java中的FTPClient库提供了一套完整的FTP操作接口,开发者可以通过这些接口轻松地实现与FTP服务器的交互。无论是文件的上传、下载还是目录管理,都变得简单易行。在实际应用中,还需要考虑错误处理、重试...

    使用commons.net FTP 和sun.net.ftp.FtpClient 多种方式上传下载(包括批量)删除功能(一)

    在本文中,我们将深入探讨如何使用Apache Commons Net库和Java内置的`sun.net.ftp.FtpClient`来实现FTP(文件传输协议)的功能,包括上传、下载、批量操作以及删除文件。这两个库提供了丰富的API,使得在Java应用...

    用org.apache.commons.net.ftp.FTPClient包实现简单文件下载

    3. 资源管理:确保在操作完成后关闭所有打开的流,如输出流和FTP连接。 通过理解上述代码和相关API,开发者可以构建自己的FTP客户端,实现更复杂的文件上传、下载和管理功能。Apache Commons Net库不仅提供了...

    com.enterprisedt.net.ftp.FTPClient所需的JAR(edtftpj.jar)

    `,然后创建FTPClient实例并进行相应的FTP操作。 使用`FTPClient`类时,常见的操作包括: - **连接**:`FTPClient.connect(host, port)`建立到FTP服务器的连接。 - **登录**:`FTPClient.login(username, password...

    org.apache.commons.net.ftp.FTPClient jar包

    FTP应用的jar包,主要用于java开发FTP上传下载

    javaftp.rar_FTPClient java_ftpclient_javaftp client_swing上传下载_上传

    总的来说,“javaftp.rar”项目是一个用Java Swing和FTPClient实现的FTP客户端应用,提供了基本的文件和文件夹管理功能。对于学习FTP客户端开发的初学者来说,这是一个很好的实践案例,可以帮助理解如何将GUI与网络...

    Java使用Apache的FTPClient操作ftp

    Java程序使用Apache的commons-net-3.0.jar包中的org.apache.commons.net.ftp.FTPClient类实现对ftp上传、下载、删除等操作,是一个不错的东西哦

    java编写的ftpclient,用于向ftp发送、获取文件

    Java编写的FTPClient是用于与FTP(文件传输协议)服务器交互的一个客户端程序,它使得开发者能够在Java应用程序中实现上传和下载文件的功能。FTP是互联网上一个标准的服务,它允许用户在计算机之间传输文件,通常...

    java ftp 下载 源程序 FTPClient

    FTPClient是一个流行的Java库,它提供了与FTP服务器交互的接口,使得开发者能够轻松地执行各种FTP操作。下面将详细阐述Java FTP下载的基本原理、FTPClient库的使用方法以及如何实现FTP文件下载。 FTP是一种标准的...

    java利用FTPClient实现上传下载文件.doc

    FTPClient 提供了上传、下载、删除、创建目录等多种操作 FTP 服务器的功能。 上传文件 上传文件是指将本地文件上传到 FTP 服务器上。使用 FTPClient 可以轻松实现文件上传。下面是一个上传文件的示例代码: ```...

    调用FtpClient类上传文件(java)

    其他提及的jar文件(如ojdbc14.jar、jsp-api.jar、dom4j-1.6.1.jar、log4j-1.2.14.jar)可能与特定的应用场景有关,但不是直接用于FTP操作。 以下是一个简单的使用`FtpClient`上传文件的Java代码示例: ```java ...

    JAVA中使用FTPClient上传下载

    FTPClient的使用涉及连接到FTP服务器、登录、执行文件操作以及断开连接等步骤。 ### 连接到FTP服务器 首先,创建一个`FTPClient`实例,然后使用`connect`方法连接到FTP服务器。`connect`方法接受服务器的主机名和...

    java 连接 FTP 文件操作(上传,下载,删除,复制

    本文将详细讨论如何使用Java连接FTP(File Transfer Protocol)服务器,进行文件的上传、下载、删除以及复制等操作。 首先,Java通过`java.net`和`javax.net`包提供了FTP客户端的功能。主要依赖于`java.net....

    FtpClient写的java FTP工具

    总结一下,`FtpClient`是Java中实现FTP功能的重要工具,它提供了丰富的接口来执行FTP的各种操作。通过使用`FtpClient`,开发者可以方便地实现文件的上传、下载、删除,以及对远程目录的管理。在实际开发中,我们可以...

    使用FTPClient实现ftp文件上传

    FTPClient是Apache Commons Net库中的一个关键类,用于在Java应用程序中执行FTP(文件传输协议)操作。在本文中,我们将深入探讨如何使用FTPClient来实现FTP文件上传,特别是处理中文文件名的上传问题。 FTP是一种...

    JAVA FTPClient文件操作

    Java中的FTPClient提供了强大的FTP文件操作功能,通过合理的API设计,使得开发者能够高效地实现FTP交互。了解并熟练掌握这些方法,对于进行服务器间的文件传输至关重要。在实际应用中,还需考虑安全性、性能优化以及...

    FTP.rar_ftp swing_java FtpClient_java ftp_swing_swing 开发ftp

    标题中的"FTP.rar_ftp swing_java FtpClient_java ftp_swing_swing 开发ftp"表明这是一个关于使用Java Swing和FtpClient库开发FTP客户端的项目。这个FTP客户端能够实现多种功能,包括文件和文件夹的上传、下载,以及...

    Java常用FTP文件操作说明Apache.FTPClient,ftp4j,jftp

    ### Java常用FTP文件操作详解:Apache.FTPClient, ftp4j, jftp 在Java开发过程中,通过FTP(File Transfer Protocol)进行文件传输是一项常见需求。本文将详细讲解三种常用的FTP客户端库——Apache.FTPClient、ftp4...

    FTPClient用于java开发FTP客户端

    在Java中,FTPClient库提供了一个丰富的API,允许开发者执行各种FTP操作,如连接到FTP服务器、登录、上传文件、下载文件、改变目录、列出目录内容等。这个库不仅支持标准的FTP协议,还支持FTP over SSL/TLS(FTPS)...

Global site tag (gtag.js) - Google Analytics