Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java I/O FTP同步代码及FileZilla Server设置

Java I/O FTP同步代码及FileZilla Server设置

作者头像
张张
发布于 2019-12-26 07:40:35
发布于 2019-12-26 07:40:35
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

假设现在有两台机器,一个是你本地开发的机器,一台是服务器,而你本地又有两个应用,需要从shopManage同步到fxShop,如下图.

在2的时间节点还要同时同步到右边的服务器上,二本地两个应用之间使用I\O拷贝。

新建一个工具类如下: 第一个方法用IO流方式进行本地拷贝 第二个方法才是FTP方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class FileSynchronousUtil {
    /**
     * 文件本机拷贝
     * @param localPath 源路径
     * @param yinPath 目标路径
     * @return
     */
    public static boolean copy(String localPath, String yinPath) {
        try {
            int bytesum = 0; 
            int byteread = 0;
            File oldfile = new File(localPath); 
            if (oldfile.exists()) { // 文件存在时 
                InputStream inStream = new FileInputStream(localPath); 
                String wenjianName = localPath.substring(localPath.lastIndexOf("\\"));
                System.out.println(wenjianName); 
                System.out.println(yinPath + wenjianName);
                // 读入原文件
                FileOutputStream fs = new FileOutputStream(yinPath + wenjianName);
                byte[] buffer = new byte[1444];
                while ((byteread = inStream.read(buffer)) != -1) {
                    bytesum += byteread; // 字节数 文件大小
                    System.out.println(bytesum);
                    fs.write(buffer, 0, byteread);
                }
                inStream.close();
           }
        } catch (Exception e) {
            System.out.println("复制单个文件操作出错");
            e.printStackTrace();
        }
        return true;
    }
 
    /**
     * 使用FTP方式同步文件到远程服务器
     * @param localPath 本地路径
     * @param FtpPath 远程FTP服务器路径
     * @param FtpPathName 远程FTP服务器登录名
     * @param FtpPathPass 远程FTP服务器登录密码
     * @param FtpIp 远程FTP服务器IP地址
     */
    public static void copy(String localPath, String FtpPath, String FtpPathName,
        String FtpPathPass, String FtpIp) {
        //链接FTP
        FTPClient ftpClient = new FTPClient();
        FileInputStream fis = null;
        int reply;
        try {
            ftpClient.connect(FtpIp, 21);
            ftpClient.login(FtpPathName, FtpPathPass);
            reply = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftpClient.disconnect();
            }
            fis = new FileInputStream(localPath);
            ftpClient.setBufferSize(10240000);
            String wenjianName = localPath.substring(localPath.lastIndexOf("\\")+1); 
            ftpClient.makeDirectory(FtpPath);
            ftpClient.changeWorkingDirectory(FtpPath);
            ftpClient.setControlEncoding("GBK");
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
            //被动模式传输
            ftpClient.enterLocalPassiveMode();
//          ftpClient.storeFile(new String(wenjianName.getBytes("GBK"), "iso-8859-1") , fis);
            ftpClient.storeFile(wenjianName, fis);
            fis.close();
        /*  String finalRemoteFileName = FtpPath.replaceAll(".ing", "");
            ftpClient.rename(FtpPath, finalRemoteFileName);*/
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (ftpClient.isConnected()) {
                try {
                    ftpClient.disconnect();
                } catch (IOException ioe) {
                    ioe.getMessage();
                }
            }
        }
    }
}

同时准备一个ftp.propertis文件,主要参数都在这里配置,需要读取这个文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#本地IP
localIp=127.0.0.1
##本地目标地址
local_targetPath=D\:\\tomcat\\apache-tomcat-6.0.16\\webapps\\fxShop
##远程目标地址
remote_targetPath=
#远程FTP服务器IP
remote_ftpIp=127.0.0.1
#远程FTP服务器登录名
remote_ftpServerName=test
#远程FTP服务器登录密码
remote_ftpServerPassWord=123

写一个主调(Main)方法,就可以进行调用测试了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
        //读取配置文件,
        InputStream stream = null;
        try {
            //stream = new BufferedInputStream(new FileInputStream(new File("src/common.properties")));
            stream = NowFirst.class.getResourceAsStream("/common.properties");
            System.err.println(stream);
        } catch (Exception e) {
            System.out.println("配置文件未找到!");
        }
         Properties p = new Properties();
         try {
            p.load(stream);
        } catch (IOException e) {
            System.out.println("文件未加载");
        }
        String localPath=p.getProperty("localPath");
        String targetPath=p.getProperty("targetPath");
        String FtpOnePath=p.getProperty("FtpOnePath");
        System.err.println(FtpOnePath);
        String FtpOnePathName=p.getProperty("FtpOnePathName");
        String FtpOnePathPass=p.getProperty("FtpOnePathPass");
        String FtpTwoPath=p.getProperty("FtpTwoPath");
        String FtpTwoPathName=p.getProperty("FtpTwoPathName");
        String FtpTwoPathPass=p.getProperty("FtpTwoPathPass");
        String FtpOneIp=p.getProperty("FtpOneIp");
        String FtpTwoIp=p.getProperty("FtpTwoIp");
        serviceDao dao=new serviceDao();
        //同步本地
        //dao.copy(localPath, targetPath);
        //同步Ftp
        //第一台
        dao.copy(localPath, FtpOnePath, FtpOnePathName, FtpOnePathPass,FtpOneIp);
        //第二台
        //dao.copy(localPath, FtpTwoPath, FtpTwoPathName, FtpTwoPathPass,FtpTwoIp);
}

当然了,是用FTP同步需要FTP服务器支持,你要建立一个FTP服务,比较方便的是使用FileZilla Server

FileZilla Server设置: 首先需要新建一个用户:

直接填一个用户名就好了:

然后账号设置这里,你可以给给他分配一个密码,也可以不写,去掉勾就好了:

接下来就是制定一个共享目录,这个目录就是用来同步到的目标地址:

这里假设建在F盘的FTPTest目录下。 注意:这里的Read、Write必须勾选,否则FTP就没法写入文件了

还要设置这个文件夹为系统共享的,右键-属性-共享这个文件夹:

好了,就弄完了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FTP测试工具类「建议收藏」
在进入正文前,先给大家分享一款比较好用的服务器连接工具: IIS7服务器管理工具是一款windows全系下用于连接并操控基于windows和linux系统的VPS、VNC、FTP等远程服务器、云服务器的管理工具。 界面简单明了,操作易上手,功能强大,支持批量导入服务器,并批量打开,多窗口化管理,除此之外,加载本地硬盘、硬盘映射、加载服务器的声音,远程声卡读取等功能也一应俱全,完全实现了各类场景使用,对于FTP连接界面,其中FTP文件的定时上传,定时下载(也可以说定时上传下载、定时备份)功能,对于经常使用FTP的小伙伴来说,也是非常适用的。 工具支持自动更新,压缩包只有7.62M,方便简洁,一步到位。 下载地址:IIS7服务器管理工具 简单的使用步骤可以看下面的截图,做了详细标注:
全栈程序员站长
2022/08/23
1.1K0
FTP测试工具类「建议收藏」
java 中 FtpClient 实现 FTP 文件上传、下载
源代码大部分是网上找的,查来查去,找到几个可以用的例子,改来改去,揉合成现在这个样子。
微风-- 轻许--
2022/04/13
8.4K0
java 中 FtpClient 实现  FTP 文件上传、下载
java操作ftp
ftp操作工具类 package com.ftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetSocketAddress; import
IT架构圈
2018/05/31
1.9K0
远程过程调用 Java RMI 技术 远程控制
前段时间空闲时期,研究了commonlang3 的jar包。无意中搜索到了RMI 远程过程调用的相关知识。并实际测试了一番。现特此记录以下以备将来不时之需。
世玉
2020/09/09
1K0
JAVA操作FTP(FTP工具类)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133224.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/27
8.6K0
java移动/赋值文件 copy/move file
1 public class FileAccess 2 { 3 4 public static boolean Move(File srcFile, String destPath) 5 { 6 // Destination directory 7 File dir = new File(destPath); 8 9 // Move file to new directory 10 boolean succ
猿人谷
2018/01/17
1.2K0
java FTP同步工具
public class FtpGetD { private FTPClient ftpClient ; public FtpGetD() { this.ftpClient = new FTPClient(); } /** * 功能说明:通过递归实现 ftp目录文件与本地文件同步更新 * * @param ftpfilepath *
葫芦
2019/04/17
2.5K0
基于spring boot ftp文件上传
对ftp文件上传将行封装,实现连接的单例模式,完成线程安全的改进,ftp文件上传下载失败的重试。
张泽旭
2018/12/10
7.5K0
Java下载文件的几种方式
以流的方式下载 public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名。 String filename = file.getName(); /
一觉睡到小时候
2019/09/17
4.1K0
commons-net网络开发包
commons-net以前用于ftp的文件上传和下载,现在差不多都忘记了,本文先做一个记录,方便后面如果要用也能随时找到
在水一方
2022/06/14
7800
Java实现对文本文件MD5加密并ftp传送到远程主机目录
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
java架构师
2018/12/27
8710
java实用工具类——使用java代码实现ftp上传下载工具类
小编最近忙着学习项目构架上的一些技术,把实用的工具类整理下,单独放在一个项目。其他项目需要用直接使用maven依赖一下就可以使用了。项目中需要实现上传多张图片,由于多张图片,又担心并发量大。所以小编做了一个负载均衡,把上传后的图片保存到linux上的ftp中去,不了解linux上的ftp小编后期编写个教程。
全栈程序员站长
2022/08/12
2.2K0
VSFTPD技术
2、在pom.xml通过坐标引入相关jar包( 该jar用于将文件封装成字节流的数据传输的功能 )
时间静止不是简史
2020/07/27
2.3K0
VSFTPD技术
FTP工具类
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.SocketException; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPCli
一笠风雨任生平
2019/08/02
1.6K0
org.apache.commons.net.MalformedServerReplyException: Could not parse response code. Server Reply: S
案例代码,参考:https://blog.csdn.net/tengdazhang770960436/article/details/43237369,如下所示:
别先生
2021/10/29
2.2K0
ftp工具类:上传与下载文件
linux服务器搭建ftp服务: https://program.blog.csdn.net/article/details/88825921
全栈程序员站长
2022/08/26
3.9K0
JAVA代码实现FTP文件下载
一、下载commons-net-1.4.1.jar包,放到lib下,并加载到.classpath文件中
全栈程序员站长
2022/08/22
1.2K0
Java FTP 上传文件 精简版 原
import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; // 初始化FTP客户端 FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(ip, port); // 连接FTP服务器 ftp.login(usern
用户2836074
2018/08/15
2.4K0
Java 上传文件到ftp服务器「建议收藏」
前两篇文章我们搭建了一个ftp服务器,并对服务器进行了相应的配置,这篇文章我们来说一下我们如何上传文件。
全栈程序员站长
2022/10/03
3.7K0
Java 上传文件到ftp服务器「建议收藏」
Java FTP下载文件
依赖的包 <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.1</version> </dependency> 方法示例 package com.xsh.util; import org.apache.commons.net.ftp.FTPClient; import
河岸飞流
2019/08/08
4.9K0
相关推荐
FTP测试工具类「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档