java ftp客戶端
发布时间:2020-12-15 03:21:58 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 apache commons-net可以很方便的实现,但是这个第三方包中对文件夹的删除与创建(级联)操作并不是特别的方便。删除文件夹必须保证该文件夹下没有任何
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
apache commons-net可以很方便的实现,但是这个第三方包中对文件夹的删除与创建(级联)操作并不是特别的方便。删除文件夹必须保证该文件夹下没有任何 文件,创建文件夹也必须要求父文件夹存在。为了方便以后使用方便,对其进行了简单的封装,主要针对删除与文件夹创建。代码如下:
package cn.androiddevelop.io; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.SocketException; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; /** * ftp客户端 * * @author Yuedong Li * */ public class FtpClient { private FTPClient client; public FtpClient(String host,String userName,String password) throws SocketException,IOException { initFtpClient(host,21,userName,password); } public FtpClient(String host,int port,port,password); } /** * 登录 * * @param host * @param port * @param userName * @param password * @throws SocketException * @throws IOException */ public void initFtpClient(String host,String password) throws SocketException,IOException { client = new FTPClient(); client.connect(host,port); client.login(userName,password); } /** * 得到所有目录 * * @param remotePath * @return * @throws IOException */ public FTPFile[] listFiles(String remotePath) throws IOException { if (client == null) return null; client.changeWorkingDirectory(remotePath); return client.listFiles(); } /** * 上传 * * @param localPath * 本地路径 * @param remotePath * ftp路径 * @return 上传是否成功 * @throws IOException */ public boolean upload(String localPath,String remotePath) throws IOException { if (client == null) return false; boolean res = false; FileInputStream fileInputStream = new FileInputStream(localPath); int index = remotePath.lastIndexOf('/'); if (index != -1) { client.setFileType(FTP.BINARY_FILE_TYPE); client.changeWorkingDirectory(remotePath.substring(0,index)); res = client.storeFile(remotePath.substring(index + 1),fileInputStream); } fileInputStream.close(); return res; } /** * 下载 * * @param remotePath * ftp路径 * @param localPath * 本地路径 * @return 下载是否成功 * @throws IOException */ public boolean download(String remotePath,String localPath) throws IOException { if (client == null) return false; boolean res = false; FileOutputStream fileOutputStream = new FileOutputStream(localPath); res = client.retrieveFile(remotePath,fileOutputStream); fileOutputStream.flush(); fileOutputStream.close(); return res; } /** * 删除文件 * * @param remotePath ftp端路径 * @return * @throws IOException */ public boolean delete(String remotePath) throws IOException { if (client == null) return false; return client.deleteFile(remotePath) || deleteDirectory(remotePath); } /** * 创建目录 * * @param remotePath * @throws IOException */ public boolean makeDirectory(String remotePath) throws IOException { if (client == null) return false; String[] item = remotePath.split("/"); String currentPath = ""; for (int i = 0; i < item.length - 1; i++) { currentPath = currentPath + "/" + item[i]; client.makeDirectory(currentPath); } return client.makeDirectory(remotePath); } /** * 删除文件 * * @param remotePath ftp端路径 * @return * @throws IOException */ private boolean deleteDirectory(String remotePath) throws IOException { FTPFile[] files = listFiles(remotePath); for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { deleteDirectory(remotePath + "/" + files[i].getName()); } else { client.deleteFile(remotePath + "/" + files[i].getName()); } } return client.removeDirectory(remotePath); } /** * 重命名 * * @param remoteOldPath * @param remoteNewPath * @return * @throws IOException */ public boolean rename(String remoteOldPath,String remoteNewPath) throws IOException { if (client == null) return false; return client.rename(remoteOldPath,remoteNewPath); } /** * 退出登录 * * @throws IOException */ public void close() throws IOException { if (client != null) client.logout(); } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |