当前位置:  技术问答>java相关

一个用Java写的简单的Ftp客户端程序!

    来源: 互联网  发布时间:2015-01-03

    本文导语:       前几天老是看见有人问用Java怎样实现FTP,趁今天晚上没事写了一个简单的实现。其实JDK包中就带有FTP的客户端的实现类,只不过有一些Bug。还好这个程序测试成功了,所以贴出来,希望大家指正,本来想改成GU...

 
   前几天老是看见有人问用Java怎样实现FTP,趁今天晚上没事写了一个简单的实现。其实JDK包中就带有FTP的客户端的实现类,只不过有一些Bug。还好这个程序测试成功了,所以贴出来,希望大家指正,本来想改成GUI界面的可是没有很多时间,因为我马上要回学校了,所以很希望有人能把它改写成GUI的。
  时间很紧,程序写的很简单,里面什么异常都没有处理,因为我只是想简单的实现一下!

import sun.net.ftp.* ;
import java.util.*;
import sun.net.*;
import java.io.*;

public class FtpTest
{    
    public static void main(String[] args)
    {
        try
        {
            byte[] bt;
            TelnetInputStream getfile;
            TelnetOutputStream putfile;
            String str;
            
            /**
             * 和服务器建立连接
             */
            FtpClient ftp = new FtpClient ("128.8.8.243");            
            str = ftp.getResponseString ();
            System.out.println(str);
            
            /**
             * 登陆到Ftp服务器
             */
            ftp.login ("user","password");
            str = ftp.getResponseString ();
            System.out.println(str);            
            
            /**
             * 下面的代码是打印当前目录列表
             */
            TelnetInputStream in = ftp.list();              
            str = ftp.getResponseString ();
            System.out.println(str);                                  
            bt=new byte[in.available()];  
            in.read (bt);
            str = new String (bt);
            System.out.println(str);
            
            /**
             * 改变当前目录到Pub目录
             */
            ftp.cd("pub");
            str = ftp.getResponseString ();
            System.out.println(str);   
            
            /**
             * 下面的代码是打印Pub目录列表
             */
            in = ftp.list();              
            str = ftp.getResponseString ();
            System.out.println(str);                                    
            bt=new byte[in.available()];  
            in.read (bt);
            str = new String (bt);
            System.out.println(str);
            str = ftp.getResponseString ();
            System.out.println(str);
            
            System.out.println("测试下载文件");             
            
            /**
             *  下载文本文件的代码 
             */
            
            
            getfile = ftp.get("bookmark.htm");   
            str = ftp.getResponseString ();
            System.out.println(str);
            ftp.ascii();
            str = ftp.getResponseString ();
            System.out.println(str);                        
            InputStreamReader xieli = new InputStreamReader (getfile);
            BufferedReader b =new BufferedReader (xieli);           
            BufferedWriter writer = new BufferedWriter (new FileWriter (new File("bookmark.htm")));            
            while( true ) 
            { 
                String s = b.readLine(); 
                if( s == null ) break; 
                else 
                    writer.write (s);                    
                    writer.flush ();    
                    writer.newLine ();
             }             
             writer.close ();
             xieli.close ();
             b.close ();
             getfile.close ();
            
            
            /**
             *  下载二进制文件的代码
             */
            
             ftp.binary ();
             getfile = ftp.get("Tips.jar");   
             str = ftp.getResponseString ();
             System.out.println(str);           
             str = ftp.getResponseString ();
             System.out.println(str);                         
             FileOutputStream output = new FileOutputStream (new File ("Tips.jar"));     
             while( true ) 
             { 
                int i = getfile.read();              
                if( i == -1 ) break; 
                else 
                {
                    output.write ((byte)i);
                    output.flush();
                }
                                      
             }             
             getfile.close();
             output.close ();
            
            
             System.out.println("测试上载文件");             
            /**
             * 上载文本文件的代码
             */
            
            ftp.ascii ();
            putfile = ftp.put("bk2.htm");
            BufferedReader fis = new BufferedReader(new FileReader ("bk2.htm"));
            BufferedWriter fos = new BufferedWriter (new OutputStreamWriter (putfile));
            while(true)
            {
                String i = fis.readLine();
                if (i == null) break;
                else
                {
                    fos.write(i);
                    fos.flush ();
                    fos.newLine ();
                }
            }
            putfile.close ();
            fis.close ();
            fos.close ();
            
            /**
             * 上载二进制文件的代码
             */
            
            ftp.binary();
            putfile = ftp.put("Tips.jar");
            FileInputStream  fs = new FileInputStream ("Tips.jar");            
            while(true)
            {
                int i = fs.read();
                if (i == -1) break;
                else
                {
                    putfile.write((byte)i);
                    putfile.flush ();                    
                }
            }
            putfile.close ();
            fs.close ();
            
        }catch(Exception e){e.printStackTrace ();}
    }
}




|
断肠人:you are so great

|
還有兩個open-source的ftp client
1)gnu的,可以到www.gnu.org去找
2)fooware的,可以到www.gjt.org去找
自己寫倒不必
但以上3個都沒有多線程

|
wxyxl不错不错。还有其他的Java FTP Client程序,只要愿意慢慢去找。:)

|
呵呵~ so great。

|
我在上传文件时老是出错,list没有问题,不知道是Sun的Bug还是我的程序有问题。

|
wxyxl果然名不虚传!

|
有两个小问题:
1、sun.net.*虽然有,可是为什么文档中没有提到呢?
2、这个包的帮助,哪里才有呢?sun上么?

    
 
 

您可能感兴趣的文章:

  • java命名空间javax.print类docflavor的类成员方法:客户端格式化打印数据定义及介绍
  • CVS的Java客户端包 Java CVS Client
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • Java的CVS客户端 Gruntspud
  • Java数据库客户端 SQL Admin
  • Java SVN 客户端库 SVNKit
  • Java的SAMBA客户端实现 jCIFS
  • OpenID的Java客户端 JOpenID
  • Java传真客户端 YajHFC
  • linux下用java编写邮箱客户端程序与在windows下有什么不同??
  • 初级问题:企业级应用中,若需要胖客户端,Java可以胜任吗?
  • WebDAV 的 Java 客户端开发包 Sardine
  • 如何在java 客户端使用http将cookies 信息发送给服务端.
  • 能不能用JAVA做一个OICQ的客户端? 100分~~~~
  • HandlerSocket的Java客户端 hs4j
  • Bitcoin的Java客户端 BitcoinJ
  • Java新浪微博客户端
  • Java的开源高性能memcached客户端 XMemcached iis7站长之家
  • 特急!!!怎样用JAVA代码实现对web客户端用户licence管理(如:licence限定为5用户)
  • 请问:现在java客户端一般采用哪几种技术以及它们的优劣?发言者均给分!
  • Java的开源高性能memcached客户端 XMemcached
  • 如何用jsp或者是java写出一个可以访问客户端的应用(就象activeX一样重服务器下在到客户,用一操做客户的资源)
  • 在java中如何取得客户端的IP地址?
  • Zookeeper Java客户端 zkclient
  • 有没有人用java做过类似邮件系统的软件(包括客户端和服务器端)
  • etcd 的 Java 客户端 Jetcd
  • to:那位大侠可以提供关于用JAVA实现FTP的客户端程序,
  • Java的MSN客户端包 jMSN
  • Java HTTP客户端 http4j
  • Cassandra的Java客户端包 astyanax
  • Java HTTP 客户端开发包 jcabi-http
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • 急!请问有分析java程序性能瓶颈的工具吗?例如,统计 java 程序中函数调用次数?
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • Linux下面的开发好的Java程序,如何部署到其他机器?开发好的Java图形程序,终端上能否用?等问题
  • 我用telnet登陆到linux下运行了一个java程序,在关闭了telnet后怎么能让这个java程序继续执行
  • 我用telnet登陆到linux下运行了一个java程序,在关闭了telnet后怎么能让这个java程序继续执行,请高手指点一下
  • SecureCRT上运行一个JAVA程序,该程序类似一个在WINDOWS下一直运行的CMD窗口的东西,SecureCRT关掉后,JAVA还会继续运行吗?
  • 各位大虾,为什么我的java程序能通过编译,但是在用java命令运行程序的时候却老是报错“Exception in thread "main" java.lang.NoClassDe
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • 把java源程序生成应用程序有哪些方法?
  • 学习JAVA程序设计,有没有《WINDOWS程序设计》这样的经典书籍?
  • 我迷惑:做jsp,servlet算不算真正的JAVA程序员?要达到JAVA程序员的标准都要做哪方面的程序?
  • 请问JAVA如何定义常量实行多个JAVA程序共用?
  • 求救!!如何在java程序中调用外部非java的exe文件?
  • 请问如何在java程序中关闭其他程序?急!急!!急!!!
  • 如何设置java应用程序的风格,如java风格,和windows风格!
  • 如何通过java程序调用vb程序
  • 运行了2个java程序,怎样区分两个程序?
  • 在java控制台程序中,可以用System.exit(0);使用一个程序终止,那么在servlet中如何使一个servlet程序终止呢?
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3