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
删除文件使用`FTPClient.deleteFile()`方法,而删除目录则需先改变到该目录,然后使用`FTPClient.removeDirectory()`。 7. **被动模式与主动模式** FTP的主动模式中,服务器发起数据连接到客户端,而在被动模式下...
Java实现文件下载并解决中文文件名乱码
因为开发一个项目要用到FTP上传功能,用的是.NET平台,当时找了半天也没有关于FTP...找了很多资料,并参考了一下Java的sun.net.FtpClient类,总算可以拿出来用,所以就迫不及待的传上来给大家共享,相对性能方面还可以。
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函数。
在提供的代码示例中,可以看到使用了`sun.net.ftp.FtpClient`类来实现FTP客户端的功能。然而,值得注意的是,`sun.net.ftp.FtpClient`并不是标准的Java API,而是Oracle JRE的一个私有实现,这意味着它可能在不同的...
import sun.net.ftp.FtpClient; public class MainCtrl extends HttpServlet { private FtpClient ftpClient; public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, ...
TestFtpUpload 为示例工程 依赖的jar 里面都有 倒入到...1. 通过sun :sun.net.ftp.FtpClient 2. 通过apache:org.apache.commons.net.ftp.FTPClient 3. 通过edtftp: com.enterprisedt.net.ftp.FileTransferClient
FTP上传到服务器 非常好用 import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; import java.util.StringTokenizer; import sun.net.ftp.FtpClient; /**
在JBuilder9中,Java提供了`sun.net.ftp.FtpClient`类,它是实现FTP功能的核心。`FtpClient`类包含了一系列方法,使得开发者能够轻松地与FTP服务器交互,例如: 1. `openServer(String hostname)`和`openServer...
- `sun.net.ftp.FtpClient`:这是一个内部类,用于处理FTP连接和操作,如登录、改变目录、上传、下载等。 - `TelnetInputStream` 和 `TelnetOutputStream`:与 Telnet 协议相关的输入输出流,可能被用作FTP连接的...
`FtpClient` 类可能基于`sun.net.ftp.FtpClient` 或第三方库如Apache Commons Net。 2. **Swing组件**:`Frame1` 类继承自`JFrame`,表示一个窗口应用程序。其中包含了许多Swing组件,如`JTextField`(文本框)、`...
在这个特定的代码段中,开发者使用了`sun.net.ftp.*`包中的类来实现FTP客户端的功能,这是一个内部使用的非公开API,可能在不同JVM版本中不可用或不稳定。尽管如此,我们仍然可以了解这个例子的基本思路和一般Java ...
在Java中,可以使用`sun.net.ftp.FtpClient`类来实现FTP操作。示例代码展示了如何创建一个FTP连接,登录服务器,并进行基本的文件操作。在实际应用中,需要注意异常处理,确保连接的稳定性和安全性。 在上述的代码...