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.net.ftp.FtpClient,it.sauronsoftware.ftp4j.FTPClient,org.apache.commons.net.ftp.FTPClient三种不同的方式操作FTP
总的来说,Java中的FTPClient库提供了一套完整的FTP操作接口,开发者可以通过这些接口轻松地实现与FTP服务器的交互。无论是文件的上传、下载还是目录管理,都变得简单易行。在实际应用中,还需要考虑错误处理、重试...
在本文中,我们将深入探讨如何使用Apache Commons Net库和Java内置的`sun.net.ftp.FtpClient`来实现FTP(文件传输协议)的功能,包括上传、下载、批量操作以及删除文件。这两个库提供了丰富的API,使得在Java应用...
3. 资源管理:确保在操作完成后关闭所有打开的流,如输出流和FTP连接。 通过理解上述代码和相关API,开发者可以构建自己的FTP客户端,实现更复杂的文件上传、下载和管理功能。Apache Commons Net库不仅提供了...
`,然后创建FTPClient实例并进行相应的FTP操作。 使用`FTPClient`类时,常见的操作包括: - **连接**:`FTPClient.connect(host, port)`建立到FTP服务器的连接。 - **登录**:`FTPClient.login(username, password...
FTP应用的jar包,主要用于java开发FTP上传下载
总的来说,“javaftp.rar”项目是一个用Java Swing和FTPClient实现的FTP客户端应用,提供了基本的文件和文件夹管理功能。对于学习FTP客户端开发的初学者来说,这是一个很好的实践案例,可以帮助理解如何将GUI与网络...
Java程序使用Apache的commons-net-3.0.jar包中的org.apache.commons.net.ftp.FTPClient类实现对ftp上传、下载、删除等操作,是一个不错的东西哦
Java编写的FTPClient是用于与FTP(文件传输协议)服务器交互的一个客户端程序,它使得开发者能够在Java应用程序中实现上传和下载文件的功能。FTP是互联网上一个标准的服务,它允许用户在计算机之间传输文件,通常...
FTPClient是一个流行的Java库,它提供了与FTP服务器交互的接口,使得开发者能够轻松地执行各种FTP操作。下面将详细阐述Java FTP下载的基本原理、FTPClient库的使用方法以及如何实现FTP文件下载。 FTP是一种标准的...
FTPClient 提供了上传、下载、删除、创建目录等多种操作 FTP 服务器的功能。 上传文件 上传文件是指将本地文件上传到 FTP 服务器上。使用 FTPClient 可以轻松实现文件上传。下面是一个上传文件的示例代码: ```...
其他提及的jar文件(如ojdbc14.jar、jsp-api.jar、dom4j-1.6.1.jar、log4j-1.2.14.jar)可能与特定的应用场景有关,但不是直接用于FTP操作。 以下是一个简单的使用`FtpClient`上传文件的Java代码示例: ```java ...
FTPClient的使用涉及连接到FTP服务器、登录、执行文件操作以及断开连接等步骤。 ### 连接到FTP服务器 首先,创建一个`FTPClient`实例,然后使用`connect`方法连接到FTP服务器。`connect`方法接受服务器的主机名和...
本文将详细讨论如何使用Java连接FTP(File Transfer Protocol)服务器,进行文件的上传、下载、删除以及复制等操作。 首先,Java通过`java.net`和`javax.net`包提供了FTP客户端的功能。主要依赖于`java.net....
总结一下,`FtpClient`是Java中实现FTP功能的重要工具,它提供了丰富的接口来执行FTP的各种操作。通过使用`FtpClient`,开发者可以方便地实现文件的上传、下载、删除,以及对远程目录的管理。在实际开发中,我们可以...
FTPClient是Apache Commons Net库中的一个关键类,用于在Java应用程序中执行FTP(文件传输协议)操作。在本文中,我们将深入探讨如何使用FTPClient来实现FTP文件上传,特别是处理中文文件名的上传问题。 FTP是一种...
Java中的FTPClient提供了强大的FTP文件操作功能,通过合理的API设计,使得开发者能够高效地实现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(File Transfer Protocol)进行文件传输是一项常见需求。本文将详细讲解三种常用的FTP客户端库——Apache.FTPClient、ftp4...
在Java中,FTPClient库提供了一个丰富的API,允许开发者执行各种FTP操作,如连接到FTP服务器、登录、上传文件、下载文件、改变目录、列出目录内容等。这个库不仅支持标准的FTP协议,还支持FTP over SSL/TLS(FTPS)...