返回顶部
首页 > 资讯 > 精选 >如何使用java搭建ftp/sftp进行数据传递
  • 302
分享到

如何使用java搭建ftp/sftp进行数据传递

2023-06-20 12:06:25 302人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关如何使用java搭建ftp/sftp进行数据传递,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ftp/sftp概念及搭建ftp是一种文件传输协议,让客户端和服务端能够互相传递文

这篇文章将为大家详细讲解有关如何使用java搭建ftp/sftp进行数据传递,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

ftp/sftp概念及搭建

ftp是一种文件传输协议,让客户端和服务端能够互相传递文件,图片等数据;方便快捷;
sftp是ssh file transfer protocol缩写,也是一种文件传输协议.sftp比ftp安全的多,但传输效率要低的多

搭建:
ftp可以搜索网上教程,很多,在此不过多赘述

如何使用java搭建ftp/sftp进行数据传递

创建完成后,通过浏览器就可以访问到内容了;

sftp用freesshd搭建(记得freesshd的安装路径不要有中文,否则各种报错);这个也可以自行百度,解决方法很多;

Java代码

代码如下:import java.io.*;import java.net.SocketException; import java.util.ArrayList;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPClientConfig;import org.apache.commons.net.ftp.FTPReply;public class FTPClientTest{    private  static String userName; // FTP 登录用户名    private static String passWord; // FTP 登录密码    private static String ip;// FTP 服务器地址IP地址    private  static int port; // FTP 端口    //构造函数初始化    public FTPClientTest(String userName,String password,String ip,int port){    this.userName=userName;    this.password=password;    this.ip=ip;    this.port=port;    }    public static String getUserName(){ return userName;}    public static void setUserName(String userName) {FTPClientTest.userName = userName; }     public static String getPassword() {return password;}    public static void setPassword(String password){FTPClientTest.password = password;}    public static String getIp() { return ip; }    public static void setIp(String ip){FTPClientTest.ip = ip;}    public static int getPort() {return port; }    public static void setPort(int port) {FTPClientTest.port = port;}    private static FTPClient ftpClient = null; // FTP 客户端代理            public boolean connectServer()    {     System.out.println("进行连接");         boolean flag = true;         if (ftpClient == null)         {             int reply;             try             {                 System.out.println("初始化连接");                 ftpClient = new FTPClient();                 String LOCAL_CHARSET = "GBK";                 System.out.println("设置IP和端口");                 ftpClient.connect(ip, port);                 System.out.println("设置密码");                 ftpClient.login(userName, password);                 System.out.println("进行连接");                 reply = ftpClient.getReplyCode();                 ftpClient.setDataTimeout(120000);                 System.out.println("设置编码操作方式");                 if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON"))) // 开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK).                 {                     LOCAL_CHARSET = "UTF-8";                 }                 System.out.println("设置编码操作方式1");                 ftpClient.setControlEncoding(LOCAL_CHARSET);                 System.out.println("是否连接成功");                 if (!FTPReply.isPositiveCompletion(reply))                 {                     ftpClient.disconnect();                     System.out.println("FTP 服务拒绝连接!");                     flag = false;                 }             }             catch (SocketException e)             {                 flag = false;                 e.printStackTrace();                 System.out.println("登录ftp服务器 " + ip + " 失败,连接超时!");             }             catch (IOException e)             {                 flag = false;                 e.printStackTrace();                 System.out.println("登录ftp服务器 " + ip + " 失败,FTP服务器无法打开!");             }             catch (Exception e)             {                 flag = false;                 e.printStackTrace();                 // System.out.println("登录ftp服务器 " + ip + " 失败,FTP服务器无法打开!");             }         }         return flag;    }               public boolean uploadFile(String remoteFile1, File localFile)    {    boolean flag = false;                try        {            InputStream in = new FileInputStream(localFile);            String remote = new String(remoteFile1.getBytes("UTF-8"), "iso-8859-1");            if (ftpClient.storeFile(remote, in))            {                flag = true;                System.out.println(localFile.getAbsolutePath() + "上传文件成功!");            }            else            {                System.out.println(localFile.getAbsolutePath() + "上传文件失败!");            }            in.close();        }        catch (FileNotFoundException e)        {            // TODO Auto-generated catch block            e.printStackTrace();        }        catch (UnsupportedEncodingException e)        {            // TODO Auto-generated catch block            e.printStackTrace();        }        catch (IOException e)        {            // TODO Auto-generated catch block            e.printStackTrace();        }                return flag;    }            public boolean uploadFile(String local, String remote)    {                boolean flag = true;        String remoteFileName = remote;        if (remote.contains("/"))        {            remoteFileName = remote.substring(remote.lastIndexOf("/") + 1);            // 创建服务器远程目录结构,创建失败直接返回            if (!CreateDirecroty(remote))            {                return false;            }        }        File f = new File(local);        if (!uploadFile(remoteFileName, f))        {            flag = false;        }                return flag;    }            public ArrayList<String> uploadManyFile(String filename, String uploadpath)    {        boolean flag = true;        ArrayList<String> l = new ArrayList<String>();        StringBuffer strBuf = new StringBuffer();        int n = 0; // 上传失败的文件个数        int m = 0; // 上传成功的文件个数        try        {            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);            ftpClient.enterLocalPassiveMode();            ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);            ftpClient.changeWorkingDirectory("/");            File file = new File(filename);            File fileList[] = file.listFiles();                        for (File upfile : fileList)            {                if (!upfile.isDirectory())                {                    String local = upfile.getCanonicalPath().replaceAll("\\\\", "/");                    String temp = upfile.getCanonicalPath();                    String a = temp.replace(filename + "\\", "");                    String remote = uploadpath.replaceAll("\\\\", "/") + a;                    flag = uploadFile(local, remote);                    ftpClient.changeWorkingDirectory("/");                }                if (!flag)                {                    n++;                    strBuf.append(upfile.getName() + ",");                    System.out.println("文件[" + upfile.getName() + "]上传失败");                }                else                {                    m++;                }            }            l.add("失败个数" + n);            l.add("成功个数" + m);            l.add(strBuf.toString());        }        catch (NullPointerException e)        {            e.printStackTrace();            System.out.println("本地文件上传失败!找不到上传文件!" + e);        }        catch (Exception e)        {            e.printStackTrace();            System.out.println("本地文件上传失败!" + e);        }        return l;    }         public   boolean  loadFile(String remoteFileName, String localFileName)    {                boolean flag = true;        // 下载文件        BufferedOutputStream buffOut = null;        try        {            buffOut = new BufferedOutputStream(new FileOutputStream(localFileName));            flag = ftpClient.retrieveFile(new String(remoteFileName.getBytes("UTF-8"), "iso-8859-1"), buffOut);        }        catch (Exception e)        {            e.printStackTrace();            System.out.println("本地文件下载失败!" + e);        }        finally        {            try            {                if (buffOut != null)                    buffOut.close();            }            catch (Exception e)            {                e.printStackTrace();            }        }        return flag;            }            public boolean deleteFile(String filename)    {        boolean flag = true;        try        {            flag = ftpClient.deleteFile(new String(filename.getBytes("UTF-8"), "iso-8859-1"));            if (flag)            {                System.out.println("删除文件" + filename + "成功!");            }            else            {                System.out.println("删除文件" + filename + "成功!");            }        }        catch (IOException ioe)        {            ioe.printStackTrace();        }        return flag;    }            public void deleteEmptyDirectory(String pathname)    {                try        {            ftpClient.removeDirectory(new String(pathname.getBytes("UTF-8"), "iso-8859-1"));        }        catch (IOException ioe)        {            ioe.printStackTrace();        }             }            public String[] listRemoteAllFiles()    {    try        {            String[] names = ftpClient.listNames();                        for (int i = 0; i < names.length; i++)            {                System.out.println(names[i]);            }            return names;        }        catch (Exception e)        {            e.printStackTrace();        }        return null;    }            public void closeConnect()    {    try        {            if (ftpClient != null)            {                ftpClient.loGout();                ftpClient.disconnect();                ftpClient=null;            }        }        catch (Exception e)        {            e.printStackTrace();        }            }            public void setFileType(int fileType1)    {    try        {            int a = FTP.BINARY_FILE_TYPE;            if (fileType1 == 1)            {                a = FTP.ASCII_FILE_TYPE;            }            ftpClient.setFileType(a);        }        catch (Exception e)        {            e.printStackTrace();        }          }            public boolean changeWorkingDirectory(String directory)    {        boolean flag = true;        try        {            flag = ftpClient.changeWorkingDirectory(directory);            if (flag)            {                System.out.println("进入文件夹" + directory + " 成功!");            }            else            {                System.out.println("进入文件夹" + directory + " 失败!");            }        }        catch (IOException ioe)        {            ioe.printStackTrace();        }        return flag;    }            public void changeToParentDirectory()    {     try         {             ftpClient.changeToParentDirectory();         }         catch (IOException ioe)         {             ioe.printStackTrace();         }            }            public void renameFile(String oldFileName, String newFileName)    {        try        {            System.out.println(oldFileName);            System.out.println(newFileName);            ftpClient.rename(new String(oldFileName.getBytes("UTF-8"), "iso-8859-1"), new String(newFileName.getBytes("UTF-8"), "iso-8859-1"));        }        catch (IOException ioe)        {            ioe.printStackTrace();        }        catch(Exception e)        {            e.printStackTrace();        }            }            @SuppressWarnings("unused")private FTPClientConfig getFtpConfig()    {     FTPClientConfig ftpConfig = new FTPClientConfig(FTPClientConfig.SYST_UNIX);         ftpConfig.setServerLanguageCode(FTP.DEFAULT_CONTROL_ENCODING);         return ftpConfig;    }            @SuppressWarnings("unused")private String iso8859togbk(Object obj)    {        try        {            if (obj == null)                return "";            else                return new String(obj.toString().getBytes("iso-8859-1"), "GBK");        }        catch (Exception e)        {            return "";        }            }            public boolean makeDirectory(String dir)    {        boolean flag = true;        try        {            flag = ftpClient.makeDirectory(dir);            if (flag)            {                System.out.println("创建文件夹" + dir + " 成功!");                            }            else            {                System.out.println("创建文件夹" + dir + " 失败!");            }        }        catch (Exception e)        {            e.printStackTrace();        }        return flag;    }            public boolean CreateDirecroty(String remote)    {        boolean success = true;        try        {            String directory = remote.substring(0, remote.lastIndexOf("/") + 1);            // 如果远程目录不存在,则递归创建远程服务器目录            if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(new String(directory)))            {                int start = 0;                int end = 0;                if (directory.startsWith("/"))                {                    start = 1;                }                else                {                    start = 0;                }                end = directory.indexOf("/", start);                                while (true)                {                    String subDirectory;                    subDirectory = new String(remote.substring(start, end).getBytes("GBK"), "iso-8859-1");                                        if (!changeWorkingDirectory(subDirectory))                    {                        if (makeDirectory(subDirectory))                        {                            changeWorkingDirectory(subDirectory);                        }                        else                        {                            System.out.println("创建目录[" + subDirectory + "]失败");                            System.out.println("创建目录[" + subDirectory + "]失败");                            success = false;                            return success;                        }                    }                    start = end + 1;                    end = directory.indexOf("/", start);                    // 检查所有目录是否创建完毕                    if (end <= start)                    {                        break;                    }                }            }        }        catch (UnsupportedEncodingException e)        {            // TODO Auto-generated catch block            e.printStackTrace();        }        return success;    }}

ftp测试代码如下:

public class test {public static void main(String[] args) {FTPClientTest ftp=new FTPClientTest("user", "548", "168.125.256.22", 21);boolean b=ftp.connectServer();System.out.println(b);System.out.println(ftp.listRemoteAllFiles());System.out.println(ftp.uploadFile("F:/home/b.txt", "/c.txt"));System.out.println(ftp.loadFile("/a.txt", "F:/home/b.txt"));ftp.closeConnect();}}

输出结果如下:

如何使用java搭建ftp/sftp进行数据传递

成功了;

sftp搭建完成后,也测试下,至于搭建过程,自行百度好啦

如何使用java搭建ftp/sftp进行数据传递

看到没,连接成功了;我用我的电脑模拟的;

关于“如何使用java搭建ftp/sftp进行数据传递”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 如何使用java搭建ftp/sftp进行数据传递

本文链接: https://lsjlt.com/news/296888.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用java搭建ftp/sftp进行数据传递
    这篇文章将为大家详细讲解有关如何使用java搭建ftp/sftp进行数据传递,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ftp/sftp概念及搭建ftp是一种文件传输协议,让客户端和服务端能够互相传递文...
    99+
    2023-06-20
  • java搭建ftp/sftp进行数据传递的全过程
    ftp/sftp概念及搭建 ftp是一种文件传输协议,让客户端和服务端能够互相传递文件,图片等数据;方便快捷; sftp是ssh file transfer protocol缩写,...
    99+
    2024-04-02
  • 如何使用Vue进行数据传递(方法浅析)
    Vue是一个流行的JavaScript框架,它可以帮助我们构建高效的用户界面。在Vue中,有多种方法可以进行数据传递,这些方法可以应用于单个组件或整个Vue实例。本文将介绍如何使用Vue进行数据传递。PropsProps是Vue提供的一种属...
    99+
    2023-05-14
  • 使用Flutter怎么对数据进行传递
    这期内容当中小编将会给大家带来有关使用Flutter怎么对数据进行传递,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Flutter 中的数据传递在开发中,数据从一个页面传递到另一个页面事很常用的,在And...
    99+
    2023-06-14
  • win 10 搭建FTP服务,并使用的FTP进行传输文件(很详细)
    安装IIS工具 打开控制面板 点击“程序” 点击“启用或关闭Windows功能” 找到“internet information services”,全部都选上。如下图: 点击“确定”,会出现以下页面: 点击“关闭”即可。  ...
    99+
    2023-09-06
    服务器 网络 windows
  • android界面是如何进行数据传递的
    android界面是如何进行数据传递的?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。主界面:package com.yy.activity.value;import and...
    99+
    2023-05-31
    android roi %d
  • Java如何使用Sftp和Ftp实现对文件的上传和下载
    这篇文章将为大家详细讲解有关Java如何使用Sftp和Ftp实现对文件的上传和下载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。第一步,导入maven依赖<!-- FTP依赖包 ...
    99+
    2023-06-14
  • 使用PHP进行页面跳转时如何传递POST参数
    标题:PHP页面跳转中传递POST参数的实现方法 在网站开发中,经常会遇到页面跳转并需要传递POST参数的情况,这时候如何使用PHP实现对POST参数的传递就显得十分重要。本文将介绍如...
    99+
    2024-04-02
  • PHP 函数的参数传递方式如何进行?
    php 函数参数传递方式有三种:按值传递:函数获得参数的副本,对 副本的修改不影响原值。按引用传递:函数获得参数的引用,对副本的修改会影响原值。按值传递可选参数:函数调用时可以指定默认值...
    99+
    2024-04-15
    php 参数传递
  • Ubuntu14.04如何使用vsftpd搭建FTP服务
    这篇文章主要讲解了“Ubuntu14.04如何使用vsftpd搭建FTP服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Ubuntu14.04如何使用vsftpd搭建FTP服务”吧!我们经...
    99+
    2023-06-13
  • spring项目如何使用maven进行搭建
    这期内容当中小编将会给大家带来有关spring项目如何使用maven进行搭建,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。开发工具:MyEclipse2014版(jdk1.7)+Maven3.9。新建Ma...
    99+
    2023-05-31
    maven spring
  • 在Android系统中使用gzip进行数据传递实例代码
    接下来,让我解说一下如何在Android系统中使用gzip进行数据传递 HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压...
    99+
    2022-06-06
    数据 gzip Android
  • 如何进行大数据平台的搭建和数据分析
    如何进行大数据平台的搭建和数据分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  行内人士皆知,大数据分析平台的搭建有利于帮助企业构建统一的数据存储和数据处理...
    99+
    2023-06-02
  • 如何使用OLEDBCommand传递参数
    使用OLEDBCommand传递参数的步骤如下:1. 创建一个OLEDBConnection对象并打开连接:```OleDbConn...
    99+
    2023-09-28
    参数
  • Flask如何使用全局变量传递数据
    这篇“Flask如何使用全局变量传递数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Fl...
    99+
    2024-04-02
  • 如何使用UniApp传递数据到服务器
    UniApp是一款开发跨平台应用的框架,使用它可以快速地开发出同时在不同平台上工作的应用程序。在应用程序中,我们经常需要向服务器传递数据,这里我们介绍如何使用UniApp传递数据到服务器。一、UniApp发送网络请求UniApp提供了一个A...
    99+
    2023-05-14
  • java两个类之间如何传递数据
    在Java中,两个类之间可以通过以下几种方式传递数据:1. 通过方法参数传递数据:一个类可以将数据作为参数传递给另一个类的方法。在调...
    99+
    2023-09-15
    java
  • Java 中如何使用 Linux 系统进行重定向操作和对象传递?
    Linux 系统是一个广泛使用的操作系统,而 Java 作为一门跨平台的编程语言,也可以很好地与 Linux 系统进行交互。本文将介绍 Java 中如何使用 Linux 系统进行重定向操作和对象传递,并提供相应的演示代码。 一、重定向操作...
    99+
    2023-10-10
    重定向 linux 对象
  • 如何使用Docker+jenkins+python3进行环境搭建
    本篇内容介绍了“如何使用Docker+jenkins+python3进行环境搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:  自动...
    99+
    2023-06-20
  • 使用PHP和Redis进行数据传输
    随着数据处理量的不断增加,如何高效地进行数据传输已成为许多企业面临的挑战。在此背景下,PHP和Redis的组合,成为了一种可行的数据处理解决方案。本文将介绍如何使用PHP和Redis进行数据传输,以及它的优势和适用场景。一、什么是Redis...
    99+
    2023-05-15
    PHP redis 数据传输
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作