java 中的 Ftp操作

老婆昨天突然跟我说起用Java做Ftp的操作,懊恼的是,我竟然没有看过,丢人丢人。。。
现特意写下文字,督促自己学习:)

    对于任何Ftp服务器,都是需要遵循Ftp协议的,所以任何的ftp相关操作都是可以通过ftp协议的相关命令来完成的,对于现在的任何Ftp客户端,实际上都只是在Ftp协议的基础上做了一层外壳,只是外壳做的好坏,功能是否顺手,界面是否美观的问题。对于Java,处理Ftp相关操作可以用sun.net.ftp包下的类来操作。其中FtpClient包含了几乎所有的Ftp功能,下面引了一篇文章,介绍FtpClient。这里会发现,FtpClient虽然覆盖了绝大部分的ftp功能,但是要删除ftp服务器上的文件确是找不到相应的操作方法。这里可能大多数人忽略了一个问题,FtpClient是继承自sun.net.TransferProtocolClient的,其中TransferProtocolClient.sendServer(String)可以向服务器发送命令,看到这里我们可以很自然的想到,FtpClient也可以向服务器直接发送相关命令来完成操作,OK,就是这样的。
    现在回到ftp的删除操作上来,怎么来删除ftp上的文件呢,用如下的代码就可以完成了:                        String fileName = "test.txt"; // 要删除的文件名
               client.sendServer("DELETE " + fileName);
(注:上面这段代码,要删除对应的文件,首先要用client.cd(String)命令进入到文件所在文件夹)其实FtpClient的实现也是通过这样来实现的:)

//引:http://xhy0422.javaeye.com/blog/63017
sun.net.ftp.FtpClient.,该类库主要提供了用于建立FTP连接的类。利用这些类的方法,编程人员可以远程登录到FTP服务器,列举该服务器上的目录,设置传输协议,以及传送文件。FtpClient类涵盖了几乎所有FTP的功能,FtpClient的实例变量保存了有关建立"代理"的各种信息。下面给出了这些实例变量。public static boolean useFtpProxy这个变量用于表明FTP传输过程中是否使用了一个代理,因此,它实际上是一个标记,此标记若为TRUE,表明使用了一个代理主机。public static String ftpProxyHost此变量只有在变量useFtpProxy为TRUE时才有效,用于保存代理主机名。public static int ftpProxyPort此变量只有在变量useFtpProxy为TRUE时才有效,用于保存代理主机的端口地址。FtpClient有三种不同形式的构造函数,如下所示:1、public FtpClient(String hostname,int port)此构造函数利用给出的主机名和端口号建立一条FTP连接。2、public FtpClient(String hostname)此构造函数利用给出的主机名建立一条FTP连接,使用默认端口号。3、FtpClient()此构造函数将创建一FtpClient类,但不建立FTP连接。这时,FTP连接可以用openServer方法建立。一旦建立了类FtpClient,就可以用这个类的方法来打开与FTP服务器的连接。类ftpClient提供了如下两个可用于打开与FTP服务器之间的连接的方法。public void openServer(String hostname)这个方法用于建立一条与指定主机上的FTP服务器的连接,使用默认端口号。public void openServer(String host,int port)这个方法用于建立一条与指定主机、指定端口上的FTP服务器的连接。打开连接之后,接下来的工作是注册到FTP服务器。这时需要利用下面的方法。public void login(String username,String password)此方法利用参数username和password登录到FTP服务器。使用过Intemet的用户应该知道,匿名FTP服务器的登录用户名为anonymous,密码一般用自己的电子邮件地址。下面是FtpClient类所提供的一些控制命令。public void cd(String remoteDirectory)该命令用于把远程系统上的目录切换到参数remoteDirectory所指定的目录。public void cdUp():该命令用于把远程系统上的目录切换到上一级目录。public String pwd():该命令可显示远程系统上的目录状态。public void binary():该命令可把传输格式设置为二进制格式。public void ascii():该命令可把传输协议设置为ASCII码格式。public void rename(String string,String string1)该命令可对远程系统上的目录或者文件进行重命名操作。除了上述方法外,类FtpClient还提供了可用于传递并检索目录清单和文件的若干方法。这些方法返回的是可供读或写的输入、输出流。下面是其中一些主要的方法。public TelnetInputStream list()返回与远程机器上当前目录相对应的输入流。public TelnetInputStream get(String filename)获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。public TelnetOutputStream put(String filename)以写方式打开一输出流,通过这一输出流把文件filename传送到远程计算机。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值