JAVA+Ftp 操作

最近在做个ftp上传、下载的项目,用到的包是sun.net.ftp.FtpClient。本地开发测试一切正常,放到服 

务器测试,程序开始 。无奈之下,只能逐步输出日志,查找原因,现做个小结。 
本地的开发环境是win7+jdk1.5,另本地搭建一个ftp服务器,软件使用的是serv_U。 

服务器上的环境是linux+jdk1.5. 

经过分析发现,linux环境与win环境的ftp操作有以下差别: 

1、ftp的根路径不同 
加入:ftp用户名:user,密码:11111 
根目录:win:c://upload;linux:/data/upload 
子目录:win:c://upload/abc;linux:/data/upload/abc 
win系统中,以ftp的用户名和密码登陆后,可直接进入cd(/abc),即可进入到abc目录 
但是,在linux系统中,以ftp的用户名和密码登陆后,需要cd完整的路径才可以进入目录,即:cd(/data/upload/abc),不可使用cd(/abc)。 

所以,要注意linux系统的文件操作时要完整的绝对路径,而不能使用相对路径。 

 

总结的地方2:java ftpUtil类,需要引用第三方的jar包

1.it.sauronsoftware.ftp4j.FTPClient

2.org.apache.commons.net.ftp.FTPClient


我用的是第一个。


要实现Java中的FTP文件合并,你可以使用Apache Commons Net库中的FTPClient类来连接到FTP服务器并进行文件操作。以下是一个简单的示例代码,展示了如何合并FTP服务器上的多个文件: ```java import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import java.io.*; public class FTPFileMerge { public static void main(String\[\] args) { String server = "ftp.example.com"; int port = 21; String username = "your-username"; String password = "your-password"; String remoteDirectory = "/path/to/remote/directory"; String mergedFileName = "merged-file.txt"; try { FTPClient ftpClient = new FTPClient(); ftpClient.connect(server, port); ftpClient.login(username, password); ftpClient.changeWorkingDirectory(remoteDirectory); FTPFile\[\] files = ftpClient.listFiles(); if (files != null && files.length > 0) { File mergedFile = new File(mergedFileName); FileOutputStream fos = new FileOutputStream(mergedFile); for (FTPFile file : files) { if (file.isFile()) { InputStream is = ftpClient.retrieveFileStream(file.getName()); byte\[\] buffer = new byte\[1024\]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1) { fos.write(buffer, 0, bytesRead); } is.close(); ftpClient.completePendingCommand(); } } fos.close(); System.out.println("Files merged successfully."); } else { System.out.println("No files found on the FTP server."); } ftpClient.logout(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的示例代码中,你需要替换以下变量的值: - `server`:FTP服务器的地址 - `port`:FTP服务器的端口号 - `username`:FTP服务器的用户名 - `password`:FTP服务器的密码 - `remoteDirectory`:FTP服务器上存储文件的目录路径 - `mergedFileName`:合并后的文件名 该代码会连接到FTP服务器,获取指定目录下的所有文件,并将它们合并到一个本地文件中。合并后的文件将保存在当前工作目录下。 请注意,这只是一个简单的示例代码,你可能需要根据你的实际需求进行适当的修改和优化。 #### 引用[.reference_title] - *1* [Java中使用IO流实现大文件的分割与合并](https://blog.youkuaiyun.com/weixin_42299427/article/details/114802582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Java Ftp 文件操作](https://blog.youkuaiyun.com/chengmin123456789/article/details/108126061)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值