package classTest; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import sun.net.TelnetInputStream; import sun.net.TelnetOutputStream; import sun.net.ftp.FtpClient; public class FtpOperation { private FtpClient client = new FtpClient(); /** * 登录FTP,并返回登录是否成功的Boolean值 * @param host * @param port * @param user * @param password * @return */ public boolean login(String host, int port, String user, String password) { boolean flag = true; try { client.openServer(host, port); client.login(user, password); } catch (IOException e) { e.printStackTrace(); flag = false; } return flag; } /** * 关闭FTP连接 */ public void close() { if(client.serverIsOpen()) { try { client.closeServer(); } catch (IOException e) { e.printStackTrace(); } } } /** * 在父级节点创建子节点目录,如果父级节点为根节点parent可以为空或“/” * @param parent * @param path * @return */ public boolean makeDir(String parent, String path) { boolean flag = true; flag = cdAssignPath(parent); if(flag) { try { //创建已经存在的目录会报错 client.sendServer("MKD " + path + "\r\n"); }catch (Exception e) { e.printStackTrace(); flag = false; } } return flag; } /** * 上传文件 * @param path保存FTP位置 * @param file要上传的文件 * @param remoteName在FTP保存时的名字 */ public void upload(String path, File file, String remoteName) { TelnetOutputStream write = null; FileInputStream read = null; byte[] by = new byte[1024]; try { if(cdAssignPath(path)) { read = new FileInputStream(file); write = client.put(remoteName); while(read.read(by) != -1) { write.write(by); } } }catch (Exception e) { e.printStackTrace(); } finally { if (read != null) { try { read.close(); } catch (IOException e) { e.printStackTrace(); } } if (write != null) { try { write.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 下载文件 * @param remotePath * @param remoteName * @param localPath * @param localName */ public void download(String remotePath, String remoteName, String localPath, String localName) { byte[] by = new byte[1024]; if(cdAssignPath(remotePath)) { try { TelnetInputStream read = client.get(remoteName); File file = new File(localPath); if(!file.exists()) { file.mkdirs(); } FileOutputStream write = new FileOutputStream(new File(localPath + "/" + localName)); while(read.read(by) > 0) { write.write(by); } read.close(); write.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 获取指定路径下的文件列表 * @param path * @return */ public List<String> ls(String path) { List<String> list = new ArrayList<String>(); if(cdAssignPath(path)) { String line = ""; BufferedReader ls; try { ls = new BufferedReader(new InputStreamReader(client.list())); while((line = ls.readLine()) != null) { //文件列表显示格式:-rw-r--r-- 1 ftp ftp 4 Jul 02 17:23 zqz.txt String[] array = line.split(" "); list.add(array[array.length -1]); } } catch (IOException e) { e.printStackTrace(); } } System.out.println(list); return list; } /** * 切换当前目录当根目录 */ private void cdRoot() { try { while(!"/".equals(client.pwd())) { client.cdUp(); } System.out.println(client.pwd()); } catch (IOException e) { e.printStackTrace(); } } /** * 切换当前目录到指定路径,该路径必须从根路径开始 * @param path * @return */ public boolean cdAssignPath(String path) { boolean flag = true; cdRoot(); try { client.cd(path); System.out.println(client.pwd()); } catch (IOException e) { e.printStackTrace(); flag = false; } return flag; } }
相关推荐
3. **设置工作模式**:根据需求,可以切换到二进制或文本模式,使用`FTPClient.setFileType(FTP.BINARY_FILE_TYPE)`或`FTP.ASCII_FILE_TYPE`。 4. **上传文件**:调用`FTPClient.storeFile(String remote, ...
sun.net.ftp.FtpClient,it.sauronsoftware.ftp4j.FTPClient,org.apache.commons.net.ftp.FTPClient三种不同的方式操作FTP
因为开发一个项目要用到FTP上传功能,用的是.NET平台,当时找了半天也没有关于FTP...找了很多资料,并参考了一下Java的sun.net.FtpClient类,总算可以拿出来用,所以就迫不及待的传上来给大家共享,相对性能方面还可以。
ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // 设置文件传输模式为二进制 } catch (IOException e) { e.printStackTrace(); } ``` 上传文件: ```java File localFile = new File("path/to/local/file"); ...
Sun JDK 提供了一个简单的 FTP 客户端实现,位于 `sun.net.ftp` 包下。以下是一个基本的示例,展示了如何连接、登录 FTP 服务器以及执行 FTP 命令: ```java import sun.net.ftp.FtpClient; import sun.net.ftp...
删除文件使用`FTPClient.deleteFile()`方法,而删除目录则需先改变到该目录,然后使用`FTPClient.removeDirectory()`。 7. **被动模式与主动模式** FTP的主动模式中,服务器发起数据连接到客户端,而在被动模式下...
### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让用户下载文件的需求,尤其是在企业级应用中。然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的...
import sun.net.ftp.FtpClient; public class ftptest { FtpClient ftpClient; private String localfilename; private String remotefilename; static String a = new String(); static int b; static ...
ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // 设置文件传输模式为二进制 // 文件上传 File localFile = new File("/path/to/local/file"); ftpClient.storeFile("remote/path", new FileInputStream(local...
jdk1.7以上专用FTP工具类,本人花了半天时间调试通过,拿来即用,具体用法详见main函数。
本文档介绍了一种利用Java标准库中的`sun.net.ftp.FtpClient`类实现FTP上传与下载功能的方法。此方法适用于JDK版本1.7及以上的环境。 #### 代码解析 ##### 包结构与导入包 首先,定义了一个名为`com.pifeng.util`...
在提供的代码示例中,可以看到使用了`sun.net.ftp.FtpClient`类来实现FTP客户端的功能。然而,值得注意的是,`sun.net.ftp.FtpClient`并不是标准的Java API,而是Oracle JRE的一个私有实现,这意味着它可能在不同的...
Java开发FTP客户端涉及的核心知识点包括FTP协议的基本原理、FTP客户端的设计模式、以及JBuilder9中提供的FTP库——sun.net.ftp.FtpClient的使用。以下是对这些知识点的详细说明: 1. FTP协议基础: FTP(File ...
- 使用`sun.net.ftp.FtpClient`类创建一个FTP客户端对象,并通过调用`openServer()`方法连接到指定的服务器。 - 登录服务器,通过调用`login()`方法,传入用户名和密码。 - 如果提供了路径,则使用`cd()`方法切换到...
在Java中,我们可以使用`sun.net.ftp.FtpClient`类来实现FTP(文件传输协议)客户端的功能,包括上传和下载文件。以下是一个简单的Java FTP客户端源码示例,展示了如何连接FTP服务器、执行FTP命令以及上传和下载文件...
import sun.net.ftp.FtpClient; public class MainCtrl extends HttpServlet { private FtpClient ftpClient; public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, ...
以下是一个简单的FTP客户端实现示例,基于Java内置的`sun.net.ftp`包: ```java import sun.net.ftp.*; public class FtpUpfile { private FtpClient ftpclient; private String ipAddress; private int ipPort...
TestFtpUpload 为示例工程 依赖的jar 里面都有 倒入到...1. 通过sun :sun.net.ftp.FtpClient 2. 通过apache:org.apache.commons.net.ftp.FTPClient 3. 通过edtftp: com.enterprisedt.net.ftp.FileTransferClient
- `sun.net.ftp.FtpClient`: 实现FTP客户端的主要类。 - `java.util.ArrayList`: 用于存储多个对象的集合。 #### 3. 类定义及成员变量 - 类名为`ftp`,继承自`Applet`,这表明它最初可能被设计为一个可以在Web...