求一个ftp的客户端源代码,VC的java的都可以。。能够实现简单的下载上传就可以。。带界面的。。
在网上找的大多数都不能用,有些运行没错,但不能实现上传或者下载等等问题。。
求一份可以实现功能的,谢谢了

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【slz0303】截止到2008-06-23 15:13:08的历史汇总数据(不包括此帖):
    发帖数:8                  发帖分:570                
    结贴数:5                  结贴分:470                
    未结数:3                  未结分:100                
    结贴率:62.50 %            结分率:82.46 %            
    楼主加油
      

  2.   

    我在程序员联合开发网上看到了些程序,但下载需要会员并上传过代码的。。
    想谁如果是会员,能借我用户名用一下,或者帮下载一些东西同样给分的。。
    http://www.programsalon.com/downloads27/sourcecode/windows/network/detail87101.html
      

  3.   

    http://www.open-open.com/35.htm或者搜索下 FileZilla  sourceforge.net有源码着急的又没人帮忙的时候要多利用下搜索引擎啊
      

  4.   

    唉。。我一直在网上找呢。。找到的有一点问题。。
    希望有比较熟悉java和ftp的人帮下忙。。
    谢谢zealVampire 
      

  5.   

    import java.io.BufferedReader;
    import java.io.DataInputStream;
    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 Test {    FtpClient ftpClient;    /**
         * connectServer 连接ftp服务器
         * 
         * @throws java.io.IOException
         * @param path
         *            文件夹,空代表根目录
         * @param password
         *            密码
         * @param user
         *            登陆用户
         * @param server
         *            服务器地址
         */
        public void connectServer(String server, String user, String password,
                String path) throws IOException {
            // server:FTP服务器的IP地址;user:登录FTP服务器的用户名
            // password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
            ftpClient = new FtpClient();
            ftpClient.openServer(server);
            ftpClient.login(user, password);
            // path是ftp服务下主目录的子目录
            if (path.length() != 0)
                ftpClient.cd(path);
            // 用2进制上传、下载
            ftpClient.binary();
        }    /**
         * upload 上传文件
         * 
         * @throws java.lang.Exception
         * @return -1 文件不存在 -2 文件内容为空 >0 成功上传,返回文件的大小
         * @param newname
         *            上传后的新文件名
         * @param filename
         *            上传的文件
         */
        public long upload(String filename, String newname) throws Exception {
            long result = 0;
            TelnetOutputStream os = null;
            FileInputStream is = null;
            try {
                java.io.File file_in = new java.io.File(filename);
                if (!file_in.exists())
                    return -1;
                if (file_in.length() == 0)
                    return -2;
                os = ftpClient.put(newname);
                result = file_in.length();
                is = new FileInputStream(file_in);
                byte[] bytes = new byte[1024];
                int c;
                while ((c = is.read(bytes)) != -1) {
                    os.write(bytes, 0, c);
                }
            }
            finally {
                if (is != null) {
                    is.close();
                }
                if (os != null) {
                    os.close();
                }
            }
            return result;
        }    /**
         * upload
         * 
         * @throws java.lang.Exception
         * @return
         * @param filename
         */
        public long upload(String filename) throws Exception {
            String newname = "";
            if (filename.indexOf("/") > -1) {
                newname = filename.substring(filename.lastIndexOf("/") + 1);
            }
            else {
                newname = filename;
            }
            return upload(filename, newname);
        }    /**
         * download 从ftp下载文件到本地
         * 
         * @throws java.lang.Exception
         * @return
         * @param newfilename
         *            本地生成的文件名
         * @param filename
         *            服务器上的文件名
         */
        public long download(String filename, String newfilename) throws Exception {
            long result = 0;
            TelnetInputStream is = null;
            FileOutputStream os = null;
            try {
                is = ftpClient.get(filename);
                java.io.File outfile = new java.io.File(newfilename);
                os = new FileOutputStream(outfile);
                byte[] bytes = new byte[1024];
                int c;
                while ((c = is.read(bytes)) != -1) {
                    os.write(bytes, 0, c);
                    result = result + c;
                }
            }
            catch (IOException e) {
                e.printStackTrace();
            }
            finally {
                if (is != null) {
                    is.close();
                }
                if (os != null) {
                    os.close();
                }
            }
            return result;
        }    /**
         * 取得某个目录下的所有文件列表
         * 
         */
        public List getFileList(String path) {
            List list = new ArrayList();
            try {
                DataInputStream dis = new DataInputStream(ftpClient.nameList(path));
                BufferedReader bfr = new BufferedReader(new InputStreamReader(dis));
                String filename = "";
                while ((filename = bfr.readLine()) != null) {
                    list.add(filename);
                }        }
            catch (Exception e) {
                e.printStackTrace();
            }
            return list;
        }    /**
         * closeServer 断开与ftp服务器的链接
         * 
         * @throws java.io.IOException
         */
        public void closeServer() throws IOException {
            try {
                if (ftpClient != null) {
                    ftpClient.closeServer();
                }
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }    public static void main(String[] args) throws Exception {
            Test ftp = new Test();
            try {
                // 连接ftp服务器
                ftp.connectServer("localhost", "username", "password", "");
                System.out.println("connected");
                /** 上传文件到 ftp默认 文件夹下 */
                System.out.println("filesize:"
                        + ftp.upload("wyl1.jpg") + "字节");
                /** 取得ftp默认文件夹下的所有文件列表,并下载到 D盘 received文件夹下 */
                List list = ftp.getFileList(".");
                for (int i = 0; i < list.size(); i++) {
                    String filename = (String) list.get(i);
                    System.out.println(filename);
                    ftp.download(filename, "D:/received/" + filename);
                }
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            finally {
                ftp.closeServer();
            }
        }
    }
    没有界面 但这不是主要问题
      

  6.   

    楼主看看 Apache Commons Net 就知道了。