ftp文件操作

FTP中的文件操作

如何对ftp文件系统进行操作



前言

公司中运用到了ftp小文件系统,自己在本地学习了一下网上的操作步骤进行操作。


一、ftp是什么?

FTP是文件传输协议的英文简称,是一种客户端/服务器协议。用于Internet上的控制文件的双向传输。

二、使用步骤

1.本地创建搭建ftp系统

如何搭建

2.操作

操作前需要知道ftp的信息:ip,端口,用户名,密码;
初始化连接->操作->关闭连接

代码如下():

package com.example.ftptest.ftpfunction;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

import java.io.*;

public class Ftp {
    private static FTPClient ftpClient;

    private static String ip = "192.168.77.1";

    private static Integer port = 21;

    private static String userName = "2793887237@qq.com";

    private static String passWord = "yeb001212";

    /**
     * 初始化ftp连接
     * @return
     * @throws Exception
     */
    public static boolean initFtpClient() throws Exception {
        boolean is_success = false;
        int reply;
        ftpClient = new FTPClient();

        ftpClient.connect(ip, port);
        ftpClient.login(userName, passWord);
        ftpClient.setControlEncoding("utf-8");
        //状态码
        reply = ftpClient.getReplyCode();
        System.out.println(ftpClient.getReplyString());
        if (!FTPReply.isPositiveCompletion(reply)) {
            throw new Exception("服务器连接失败");
        } else {
            ftpClient.enterLocalPassiveMode();
            ftpClient.setControlEncoding("GBK");
            is_success = true;
        }
        return is_success;
    }

    /**
     * 关闭ftp连接
     */
    public static void dropFtpClient() {
        try {
            ftpClient.logout();
            if (ftpClient.isConnected()) {
                ftpClient.disconnect();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 上传ftp文件
     * @param pathname  ftp服务保存地址
     * @param originFileName 待上传文件的名称(绝对地址)
     */
    public static boolean uploadFile(String pathname, String originFileName) {
        boolean is_success = false;
        try {
            InputStream inputStream = null;
            File load = new File(originFileName);
            inputStream = new FileInputStream(load);
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.changeWorkingDirectory(pathname);
            is_success = ftpClient.storeFile(load.getName(), inputStream);
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return is_success;
    }

    /*
     * 下载文件
     *
     * @param pathName  ftp服务器文件目录
     * @param localPath 下载后的文件路径 *
     * @return
     */
    public static boolean downloadFile(String pathName, String localPath) {
        boolean is_success = false;
        OutputStream os = null;
        try {
            ftpClient.changeWorkingDirectory(pathName);//跳转到指定的Ftp文件目录
            FTPFile[] ftpFiles = ftpClient.listFiles();//获取目录下所有的文件和文件夹
            //遍历目录下所有的文件
            for (FTPFile file : ftpFiles) {
                if (file.isFile()) {
                    File localFile = new File(localPath + "/" + file.getName());
                    os = new FileOutputStream(localFile);
                    ftpClient.retrieveFile(file.getName(), os);//下载文件到本地
                    os.close();
                } else if (file.isDirectory()) {
                    downloadFile(pathName + file.getName() + "/", localPath);
                }
            }
            is_success = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return is_success;
    }

    public static void main(String[] args) throws Exception {
        boolean is_success = false;
        is_success = initFtpClient();
        System.out.println(is_success);
        is_success = uploadFile("/", "C:\\Users\\27938\\Desktop\\08a7-a3a15703ead7f75c92328ac08aeb080e.gif");
        System.out.println(is_success);
        dropFtpClient();
    }


}

总结

继续加油吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值