撰写FTP服务器文件列表展示,文件上传,文件下载

本文介绍了FTP协议的基本概念、特点和工作过程,包括它的两个主要端口和两种工作模式。接着,详细阐述了如何创建FTP服务器,涉及主机IP、端口设置、账号权限等。此外,还提供了Java代码示例,演示了文件列表展示、上传和下载的步骤,帮助读者理解FTP客户端的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、FTP协议

1.概述

2.特点

3.工作过程

二、创建FTP服务器

1.打开FTPconsole.exe,记住主机IP和端口号(默认21)

​2. 创建账号,设置用户名、密码和共享文件夹,勾选给予权限

 三、文件列表展示

四、文件上传

 五、文件下载


一、FTP协议

1.概述

1、文件传送协议(File Transfer Protocol)是互联网上使用的最广泛的文件传输协议,用于Internet上的控制文件的双向传输。

2、FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。

3、FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中计算机之间传送文件。
 

2.特点

1、文件传送协议FTP只提供文件传送的一些基本的服务,它使用TCP可靠的运输方式。

2、FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

3、FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提提供服务,FTP的服务器进程由二大部分组成:一个是主进程,负责接受新的请求;另外有诺干个从属进程,负责处理单个请求。
 

3.工作过程

1、FTP有控制连接和数据连接,

控制连接标准端口为21,用于发送FTP命令信息。

数据连接标准端口为20,用于上传、下载数据。

2、FTP协议和其他协议不一样的地方就是客户端访问FTP服务器端需要建立二个TCP连接,一个用来传输FTP命令,一个用来传输数据

3、FTP有主动模式和被动模式,

主动模式:服务端从20端口主动向客户端发起连接
被动模式:服务端在指定范围内的某各端口被动等待客户,被动发起连接。

二、创建FTP服务器

1.打开FTPconsole.exe,记住主机IP和端口号(默认21)

2. 创建账号,设置用户名、密码和共享文件夹,勾选给予权限 

 三、文件列表展示

        导入FTP的依赖包,下载地址:http://commons.apache.org/proper/commons-net/apidocs/index.html

1.连接FTP服务器

2.切换至个人目录

代码示例如下:

//连接FTP服务器,显示文件列表
    public static void main(String[] args) {
        //创建基于FTP协议访问文件服务器的客户端对象
        FTPClient ftpClient = new FTPClient();

        try {
            //1.连接FTP服务器并验证用户密码
            ftpClient.connect("192.168.139.35",21);
            ftpClient.login("admin","******");
            //2.切换到要访问的目录,不存在则创建
            boolean isChange = ftpClient.changeWorkingDirectory("***");
            if (isChange = true){
                //切换成功,显示该目录下的所有文件
                SimpleDateFormat fmt = new SimpleDateFormat("yyyy年MM月dd日");
                //获取当前目录中的所有文件
                FTPFile[] ftpfileList = ftpClient.listFiles();
                for (FTPFile file:ftpfileList) {
                    String fileName = file.getName();
                    fileName = new String(fileName.getBytes("iso-8859-1"),"gb2312");
                    System.out.println("文件名称:" + fileName);
                    System.out.println("文件大小:" + file.getSize());
                    Date createDate = file.getTimestamp().getTime();
                    System.out.println("创建时间:" + fmt.format(createDate));
                }
            }else {
                //创建指定目录
                ftpClient.makeDirectory("***");
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}

四、文件上传

1.连接FTP服务器

2.切换至个人目录

3.文件上传 ftpClient.storeFile(参数1:FTP文件的保存名称,  参数2:本地文件输入流)

代码示例如下:

public class Demo2 {
    public static void main(String[] args) {
        //创建基于FTP协议访问文件服务器的客户端对象
        FTPClient ftpClient = new FTPClient();
        try (FileInputStream in = new FileInputStream("C:\\Users\\Lenovo\\Pictures\\Screenshots\\******.png")
            ){
            //第1步:连接FTP服务器并验证用户名密码
            ftpClient.connect("192.168.254.162",21);
            ftpClient.login("admin","******");
            //第2步:切换至个人目录
            boolean isChange = ftpClient.changeWorkingDirectory("***");
            if (!isChange){
                //创建个人目录
                ftpClient.makeDirectory("***");
                //切换至个人目录
                ftpClient.changeWorkingDirectory("***");
            }
            //第3步文件上传
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);    //设置文件类型
            //存文件至FTP服务器
            boolean isStroe = ftpClient.storeFile(System.currentTimeMillis()+ ".jpg",in);   //参数1:FTP文件的保存名称  参数2:本地文件输入流
            System.out.println("文件上传成功?" + isStroe);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }finally {
            try {
                ftpClient.disconnect();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

 五、文件下载

1.连接FTP服务器

2.切换至个人目录

3.文件上传 ftpClient.retrieveFile(参数1:FTP文件的保存名称,  参数2:本地文件输出流)

代码示例如下:

public class Demo3 {
    public static void main(String[] args) {
        //创建基于FTP协议访问文件服务器的客户端对象
        FTPClient ftpClient = new FTPClient();
        try (FileOutputStream out = new FileOutputStream("C:\\Users\\Lenovo\\Pictures\\Screenshots\\download\\" + System.currentTimeMillis() + ".jpg")) {           //将文件下载至该目录
            //第1步:连接FTP服务器并验证用户名密码
            ftpClient.connect("192.168.254.162", 21);
            ftpClient.login("admin", "*****");
            //第2步:切换至个人目录
            boolean isChange = ftpClient.changeWorkingDirectory("***");
            //第3步:下载指定文件
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);   //设置文件类型
            ftpClient.retrieveFile("1688798072891.jpg",out);    //参数1:FTP文件的保存名称  参数2:本地文件输出流
            System.out.println("下载成功?" + isChange);
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }finally {
            //断开连接
            try {
                ftpClient.disconnect();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sorenw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值