FTP上传下载文件 工作中有些项目会有需要链接ftp远程服务器,上传/下载文件,Mac安装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 21ftp> open ftpip port//显示以下信息即已连接,Connected to xx.xx.xxx.xx...//按照提示输入用户名,密码Name (xxx.xx.xxx.xx:test): test331 PassWord required for testPassword: 230 Logged on//切换ftp被动模式ftp> passivePassive 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"); } 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; } 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(); } } 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; } } } 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(); } } }}
来源地址:https://blog.csdn.net/weixin_42648243/article/details/132756482
--结束END--
本文标题: 【Mac本地操作远程FTP】
本文链接: https://lsjlt.com/news/433520.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0