测试环境: win2003+jdk1.6+eclipse
两种方案两个问题:
1.用sun公司的实现 sun.net.ftp.FtpClient
大部分测试都没问题,知道有一次出现了如下错误:
220 (vsFTPd 2.0.1)
230 Login successful
550 Permission denied
代码流程很简单,就是connect--login--get,以上就是打印的getReplyString(),
注(以下测试绝对亲手实验证实):
(1).这个服务器上的这个文件用ftp工具或wget或window资源管理器或命令行或下面方案的实现都可正常下载,决不是权限不够的问题,这个测试我推断 服务器配置应该没问题
(2).同样的程序代码不变,只是更换服务器ip,登录用户名和密码,可以正常下载文件,这个测试我推断 程序代码也没问题
因此产生了我的第一个问题:为什么这个服务器上的文件不能下载? (个人猜测sun的这个实现有些问题,这个服务器的配置虽然正常,可是与其它可下载的服务器配置还是稍有不同,这种配置碰到了sun实现的死角,但是我一没有sun实现的源代码,二不清楚vsftpd的配置到底哪里出问题了,希望各位帮忙分析原因)
2.用jakarta的comons.net包的org.apache.commons.net.ftp.FTPClient的实现
经测试,连接不中断,不重新连接的情况下连续下载多个文件有问题,不知道该怎么处理,如下:(代码概要)
ftp.connect
ftp.login
InputStream is = ftp.retrieveFileStream
FileOutputStream fos = new FileOutputStream("1.gz");
...//下载保存代码
fos.close
is.close
is = ftp.retrieveFileStream //这里出错
fos = new FileOutputStream("2.gz");
...//下载保存代码
fos.close
is.close
ftp.logout
ftp.disconnect
经debug测试程序老是在下载第二个文件时出错(不是文件问题,把两个文件换顺序下载一样),原因是这种实现是靠向ftp服务器发送特定命令 并检测 服务器返回的第一行字符串的 头3位表示的代码号 来控制出错与否的,第一次发送的retrieve文件命令得到如下返回字符串:
150 Opening BINARY mode data connection for 1.gz (5723235 bytes).
因此可以下载成功,但是第二次服务器返回了两行 如下:
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for 2.gz (3683252 bytes).
因此程序把返回代码定义为了200,而非150,因此 is = null不能下载
以上是我的第二个问题,不过各位遇到过没有,望指点...(这个问题已解决,得到下载第一个文件输入流后调用一下ftp.completePendingCommand()命令即可)
问题补充:
希望大家能有针对的提供有关sun.net包的资料或切实分析我所遇到的问题,我可以配合大家做测试
相关推荐
Java 实现 FTP 批量大文件上传下载 本文介绍了如何使用 Java 实现 FTP 服务器上的大批量文件的上传和下载,处理大文件的上传和下载。通过 Java 现有的可用的库来编写 FTP 客户端代码,并开发成 Applet 控件,做成...
通过上述知识点的梳理,我们可以了解到如何使用 Java 编写一个基本的 FTP 客户端程序,包括连接 FTP 服务器、下载文件以及关闭连接等功能。此外,还可以进一步学习如何将 FTP 功能集成到 Web 应用程序中,如使用 JSP...
在Java编程语言中,FTP(File Transfer Protocol)文件上传和下载是常见的网络操作,用于在本地计算机和远程服务器之间交换文件。以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。...
通过Java实现FTP批量下载文件以及解压的功能,可以极大地提高工作效率,特别是在处理大量数据时。以下是一份详细的步骤介绍: 首先,我们需要引入Java的FTP客户端库,如Apache Commons Net库。这个库提供了丰富的...
在Java中,我们可以利用Apache Commons Net库来实现FTP客户端的功能,从而上传、下载、列出远程目录、删除文件等操作。 Java FTP的主要知识点包括: 1. **Apache Commons Net库**:这是Java中广泛使用的FTP客户端...
以上步骤详细阐述了如何使用Java实现FTP下载,结合Oracle数据库获取文件地址。在实际应用中,可能还需要处理异常、优化性能、重试机制等复杂情况。对于大型项目,可以考虑使用Spring框架提供的FTP支持,这样可以更...
4. Java FTP下载: 下载文件的过程类似,但使用`retrieveFile()`方法。为了确保文件完整,可以先通过`listFiles()`获取远程目录下的文件信息,对比本地文件是否存在或是否最新。 5. 断点续传: 断点续传允许在文件...
Java FTP(File Transfer Protocol)上传和下载是网络编程中常见的任务,主要涉及到文件在本地与远程服务器之间的传输。本文将详细介绍如何使用Java实现FTP的上传和下载功能,并结合提供的资源——"WinFtp Server...
本文将深入探讨如何使用Java实现FTP文件的上传和下载功能,以满足标题和描述中的需求。作者宋海康提供的案例将为我们提供一个基础,帮助我们理解这个过程。 首先,我们需要导入Java FTP库,通常是`commons-net`库,...
7. **日志和审计**:为了追踪服务器活动并解决潜在问题,FTP服务器应记录所有客户端交互,包括登录尝试、文件操作和其他命令。 在开发Java FTP Server时,可能还会用到一些开源库,例如Apache Commons Net提供了FTP...
Java FTP上传下载是Java编程语言中用于实现文件传输协议(FTP)的一种常见应用。FTP允许用户在客户端和服务器之间交换文件,这对于数据共享、备份和远程协作非常有用。以下是一些关于Java FTP上传下载的关键知识点:...
断点续传是FTP的一个重要特性,允许用户在文件传输中断后从上次停止的位置继续,这对于大文件传输尤其有用,避免了因网络问题或意外中断而需要重新开始整个传输。 在Java中实现FTP的断点续传,你需要使用Apache ...
Java FTP下载是一个重要的网络编程领域,它涉及到Java的Socket编程、多线程处理以及文件I/O操作。在Java中,FTP(File Transfer Protocol)下载通常使用`java.net.Socket`类来建立与FTP服务器的连接,然后通过`java....
Java作为多平台支持的编程语言,提供了丰富的库和工具来实现FTP功能,包括下载、上传文件以及定时监控等操作。本篇文章将深入探讨如何使用Java进行FTP文件传输,并涉及自动解压和压缩的功能。 首先,让我们关注Java...
Java FTP(File Transfer Protocol)是Java编程中用于与FTP服务器交互的一种技术,它允许开发者编写程序来上传、下载或管理FTP服务器上的文件。在本文中,我们将深入探讨如何使用Java实现FTP的上传和下载功能,以及...
本教程将详细讲解如何使用Java来实现FTP文件的下载功能,特别是递归下载整个文件夹。 首先,我们需要引入Java的FTP客户端库,如Apache Commons Net库。这个库提供了丰富的FTP操作API,可以方便地进行文件传输。要...
Java实现FTP批量大文件上传下载 一、Java FTP客户端库的选择 在选择Java FTP客户端库时,需要考虑多个因素,例如性能、安全性、可靠性等。当前有多种FTP客户端库可供选择,例如J-FTP、SimpleFTP、FTPClient等。每...
本场景中,我们关注的重点是如何实现一个功能完善的FTP下载工具,它支持断点续传,即当下载中断后可以从上次停止的地方继续。以下是关于这个主题的详细解释: 首先,我们需要了解FTP的基本概念。FTP是一种用于在...
根据给定文件的信息,本文将详细介绍如何利用Java代码来实现从FTP服务器下载文件的过程,并对代码中的关键步骤进行深入解析。 ### Java下载FTP文件 在实际应用开发中,经常需要与FTP服务器进行交互,比如上传文件...
Java FTP服务器文件上传下载是Java开发中常见的网络编程任务,主要涉及到FTP(File Transfer Protocol)协议的应用,用于在客户端和服务器之间传输文件。本教程将详细讲解如何使用Java实现FTP服务器的文件上传、下载...