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的问题。
分享到:
相关推荐
FtpClient写的java FTP工具FtpClient写的java FTP工具FtpClient写的java FTP工具
javaftp的使用说明,主要是ftpclient的使用
FTP应用的jar包,主要用于java开发FTP上传下载
com.enterprisedt.net.ftp.FTPClient的jar包源代码以及文档 版本:edtftpj.2.2.2 2011-2-27
com.enterprisedt.net.ftp.FTPClient类库的jar包,可以用来实现对FTP服务器端的处理。
NULL 博文链接:https://starbhhc.iteye.com/blog/2315455
Java程序使用Apache的commons-net-3.0.jar包中的org.apache.commons.net.ftp.FTPClient类实现对ftp上传、下载、删除等操作,是一个不错的东西哦
NULL 博文链接:https://vakinge.iteye.com/blog/487486
Java常用FTP 文件操作 说明 Apache FTPClient ftp4j jftp java中实现ftp 文件上传 文件下载
java利用FTPClient实现上传下载文件
JAVA中使用FTPClient上传下载
FTP操作类:FTPClient - 石川 - 博客园 (2012年5月21日) JAVA中使用FTPClient上传下载 - hbcui1984的专栏 - 博客频道 - CSDN.NET (2012年5月21日) 解决FTPClient上传文件时文件被破坏问题 - janestone的专栏 - 博客...
完整的java ftp下载源程序及FTPClinet.jar包
java编写的ftpclient,用于向ftp服务器发送、获取文件。本人亲自测试过,操作系统采用centos6.5 64位,
JAVA FTPClient文件操作
FtpClient类上传文件(java) 运行需要的包: ojdbc14.jar jsp-api.jar dom4j-1.6.1.jar log4j-1.2.14.jar
Swing+FtpClient实现 支持文件、文件夹上传 支持文件、文件夹下载 支持文件重命名 支持文件删除等功能
JAVA中的FtpClient与FTPClient,并实现jsp面下载ftp服务器上的文件.docx
内容概要:java common来操作的ftp和sftp。读取文件、操作文件、删除文件、移动文件(文件改名)等一系列操作,只要导入依赖.txt里面的依赖,就可以直接使用,test类用来快速使用,提示都给足了,ftp的一系列操作...
采用apache commons开发包,实现了FTP多... 另外要注意的是,输入的FTP目录和本地目录要正确,因为程序中没有处理这类异常(呵呵呵,毕竟这不是主要目的),范例 FTP目录:\FTP\hello.txt(\代表FTP根目录) 本地目录:C:\