【Mac本地操作远程FTP】

avatar
作者
筋斗云
阅读量:0

FTP上传下载文件

工作中有些项目会有需要链接ftp远程服务器,上传/下载文件,mac安装ftp软件收费,破解也没找到路径。通过问题的关键字(异常名称,卡点日志信息)百度,试一试。网络权限问题一定要检查好,Mac打开防火墙选项,添加允许ftp接入。想到以下两种方式,记录一下,方便以后再次使用。
方式1:mac终端ftp命令操作
方式2:java代码客户端操作
在这里插入图片描述
在这里插入图片描述

方式一:mac终端ftp命令操作
准备工作

//检查本机是否具有访问ftp远程服务器权限 telnet ftpip port   es:telnet 127.0.0.1 21 //打开终端,通过brew命令安装ftp命令工具 brew install inetutils //检查ftp版本,是否已安装成功,显示版本号即为成功 ftp -V //打开终端,输入ftp,回车切换至ftp命令行open 127.0.0.1 21 ftp> open ftpip port //显示以下信息即已连接, Connected to xx.xx.xxx.xx ... //按照提示输入用户名,密码 Name (xxx.xx.xxx.xx:test): test 331 Password required for test Password:  230 Logged on //切换ftp被动模式 ftp> passive Passive mode on. //查看远程ftp服务器目录 ftp> ls //切换远程服务器目标路径(例) ftp> cd /home/.../ //定位本机文件夹路径 ftp> lcd /Users/.../本地文件存放路径  //文件上传:put 文件名.文件类型 ftp> put test.txt //文件下载:get 文件名.文件类型 ftp> get test.txt 

方式二:java代码客户端操作
POM

        <dependency>             <groupId>commons-net</groupId>             <artifactId>commons-net</artifactId>             <version>3.5</version>         </dependency> 

实操代码

import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile;  import java.io.*;  public class FTPUtils {     public static void main(String[] args) {         System.out.println("=====start");         //1.登录ftp 用户名,密码,ftp地址,端口         FTPClient client = FTPUtils.ftpLogin("test","syst4638#!0","127.0.0.1",21);         //2.上传文件-远程文件名和本地文件名是一致的         String fileName = "test.txt";         //本地路径名-ftp远程路径名         String localPath = "/Users/localhost/Documents/test/";         String remotePath = "/company/";         //远程路径名,如果已知目标路径则不需要查看         FTPUtils.getFileList(client,"/");         //2.上传文件         FTPUtils.ftpUpload(client,remotePath,localPath,fileName);         //3.下载文件          FTPUtils.ftpDown(client,remotePath,localPath,fileName);         System.out.println("=====end");     }      /**      * ftp远程登录      * @param userName 用户名      * @param password 密码      * @param ip ftp服务器ip      * @param port 端口      * @return      */     public static FTPClient ftpLogin(String userName,String password,String ip,int port){         FTPClient ftpClient = new FTPClient();         try {             ftpClient.connect(ip, port);             Boolean flag = ftpClient.login(userName, password);             System.out.println("登录标志:"+flag);         } catch (IOException e) {             e.printStackTrace();         }         return ftpClient;     }      /**      * 默认根文件目录是"/"      * @param ftpClient      * @param filePath      */     public static void getFileList(FTPClient ftpClient,String filePath){         FTPFile[] files = new FTPFile[0];         ftpClient.enterLocalPassiveMode();         try {             files = ftpClient.listFiles(filePath);             for (FTPFile file : files) {                 if (file.isFile()) {                     System.out.println("FileName:"+file.getName());                 } else if (file.isDirectory()) {                     System.out.println("FileDirectory"+file.getName());                 }             }         } catch (IOException e) {             e.printStackTrace();         }     }     /**      * 上传文件至ftp远程服务器      * @param ftpClient      * @param targetFilePath      * @param filePath      * @param remoteFileName      */     public static void ftpUpload(FTPClient ftpClient,String targetFilePath,String filePath,String remoteFileName){           try {             FileInputStream in = new FileInputStream(filePath+remoteFileName);             //切换被动模式             ftpClient.enterLocalPassiveMode();              //切换至目标文件夹             boolean isChange = ftpClient.changeWorkingDirectory(targetFilePath);              System.out.println("远程服务器当前目录:"+ftpClient.printWorkingDirectory());             // 第三步:文件上传             ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 设置文件类型             // remoteFileName:远程FTP文件的保存名称,in:本地待上传文件的文件输入流             boolean isStore = ftpClient.storeFile(remoteFileName, in);             System.out.println("文件上传成功标志:" + isStore);         } catch (                 FileNotFoundException e) {             // TODO Auto-generated catch block             e.printStackTrace();         } catch (                 IOException e) {             // TODO Auto-generated catch block             e.printStackTrace();         } finally {             // 断开连接             try {                 ftpClient.disconnect();             } catch (IOException e) {                 // TODO: handle exception                 e.printStackTrace();                 ftpClient = null;             }         }     }      /**      * 下载文件      * @param ftpClient      * @param remoteFilePath      * @param localFilePath      * @param remoteFileName      */     public static void ftpDown(FTPClient ftpClient,String remoteFilePath,String localFilePath,String remoteFileName){         try {             //切换至目标文件夹             boolean isChange = ftpClient.changeWorkingDirectory(remoteFilePath);             System.out.println("远程服务器当前目录:"+ftpClient.printWorkingDirectory());             File file = new File(localFilePath+remoteFileName);             OutputStream outputStream = new FileOutputStream(file);             //切换被动模式             ftpClient.enterLocalPassiveMode();             ftpClient.retrieveFile(remoteFilePath+remoteFileName, outputStream);             outputStream.close();         } catch (FileNotFoundException e) {              e.printStackTrace();         } catch (IOException e) {              e.printStackTrace();         } finally {             // 断开连接             try {                 ftpClient.disconnect();             } catch (IOException e) {                  e.printStackTrace();             }         }     } } 

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!