java实现连接FTP服务器,实现文件的上传和下载!!!
 一、FTP服务器 

 FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP协议是一种专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。用户可以在FTP服务器中进行文件的上传或下载等操作。

ftp服务器创建用户

1.启动ftp服务器

2.创建自己的账号,设置密码,选择主目录并权限(切忌别选禁用账号) 

3.通过主机的IP地址和端口号可以在网页启动服务器,启动成功后会显示主目录里的文件

 以上步骤都完成并成功后就说明ftp服务器已经搭建好了,接下来我们可以通过Java编程连接并访问该服务器!!!


二、连接服务器


连接服务器并获取当前目录下的所有文件。
首先下载相关的jar包,导好包后创建文件服务器的客户端对象,通过主机地址和端口号以及用户密码,连接服务器。通过循环获取用户主目录下的所有文件。

        //创建基于FTP协议访问文件服务器的客户端对象
        FTPClient ftpClient = new FTPClient();
        try {
            //连接ftp服务器并验证用户名密码
            ftpClient.connect("192.168.254.138", 21);
            ftpClient.login("huling", "147258");

            // 获取当前目录中的所有文件
            FTPFile[] ftpFileList = ftpClient.listFiles();
            for (FTPFile file : ftpFileList) {
                    System.out.println("文件名称" + file.getName());
                    System.out.println("创建时间" + file.getTimestamp());
                    System.out.println("文件大小" + file.getSize() + "字节");
                }
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


连接成功!!!

三、实现上传和下载


1.上传文件
将代码所示路径下的图片上传到创建的个人目录tutu下。
这里有一个判断,判断是否切换到了tutu目录下,如果没有则创建该目录,并将该客户端对象的目录切换到该目录。通过setFileType()方法将文件类型设置为为二进制文件  。
最后通过storeFile()方法上传文件。它的返回值是boolean类型。

  •   ftpClient.storeFile()方法用于上传文件
  •  System.currentTimeMillis():显示此刻的时间,精确到时分秒。
  •   ftpClient.makeDirectory:创建目录(只能逐级创建)
  •    ftpClient.changeWorkingDirectory("/");   // 切换到根目录,绝对目录 
  •   String dir =ftpClient.printWorkingDirectory();   // 获取当前工作目录
  •   ftpClient.changeWorkingDirectory(dir);   // 切换到当前目录
        //创建基于FTP协议访问文件服务器的客户端对象
        FTPClient ftpClient = new FTPClient();
        try (FileInputStream in = new FileInputStream("D:\\test\\tupian\\cshi.jpg")) {
            //连接ftp服务器并验证用户名密码
            ftpClient.connect("192.168.254.138", 21);
            ftpClient.login("huling", "147258");

            boolean isChange = ftpClient.changeWorkingDirectory("tutu");
            if (!isChange) {
                // 创建个人目录
                ftpClient.makeDirectory("tutu");
                // 切换
                ftpClient.changeWorkingDirectory("tutu");
            }
            System.out.println(ftpClient.printWorkingDirectory());
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); //文件类型为二进制文件    
            boolean isStore = ftpClient.storeFile(System.currentTimeMillis() + ".jpg", in);
            System.out.println("文件上传成功?" + isStore);
            
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


上传成功!!!

2.下载文件
把同一路径下ttu文件夹里名为cshi.jpg下载到(D:\\test\\tupian\\)目录下。

  •  ftpClient.retrieveFile方法用于下载文件 

注意!!!完成后要断开FTP服务器连接

  1. 退出登录  ftpClient.logout();

  2. 断开连接  ftpClient.disconnect();   

        //创建基于FTP协议访问文件服务器的客户端对象
        FTPClient ftpClient = new FTPClient();
        try (FileOutputStream out = new FileOutputStream("D:\\test\\tupian\\" + System.currentTimeMillis() + ".jpg")) {
            ftpClient.connect("192.168.254.138", 21);
            ftpClient.login("huling", "147258");

            // 切换到个人目录
            boolean isChange = ftpClient.changeWorkingDirectory("ttu");

            // 下载指定文件夹
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 文件类型
            boolean isRetrieve = ftpClient.retrieveFile("cshi.jpg", out);
            System.out.println("下载成功?" + isRetrieve);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                ftpClient.disconnect();  //关闭连接
            } catch (IOException e) {
                e.printStackTrace();
                ftpClient = null;
            }
        }


下载成功!!!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐