Java中实现FTP上传下载文件的功能,完整代码

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上穿件文件夹、检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码:

package ftpDemo;    
    import java.io.DataOutputStream;    
    import java.io.InputStream;    
    import java.io.OutputStream;    
    import sun.net.TelnetInputStream;    
   import sun.net.TelnetOutputStream;    
    import sun.net.ftp.FtpClient;    
    public class ftpUtil {    
    // 上传文件至FTP通用方法    
    public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){    
        try {    
            String ftpHost = kmConfig.getFtpHost();    
            int port = kmConfig.getFtpPort();    
            String userName = kmConfig.getFtpUser();    
            String passWord = kmConfig.getFtpPassword();    
            String path = kmConfig.getFtpPath();    
            FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。    
            ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码    
            ftpClient.binary();    
            ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。    
            TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName为上传的文件名    
            DataOutputStream dataOut = new DataOutputStream(telnetOut);    
            byte buffer[] = new byte[ * ];    
            int count = ;    
            while ((count = is.read(buffer)) != -) {    
                dataOut.write(buffer, , count);    
            }    
            telnetOut.close();    
            dataOut.close();    
            ftpClient.closeServer();    
        } catch (Exception e) {    
            System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动");    
        }    
    }    
    // 删除文件至FTP通用方法    
    public static void deleteFileFtp(KmConfig kmConfig,String fileName){    
        try {    
            String ftpHost = kmConfig.getFtpHost();    
            int port = kmConfig.getFtpPort();    
            String userName = kmConfig.getFtpUser();    
            String passWord = kmConfig.getFtpPassword();    
            String path = kmConfig.getFtpPath();    
            FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。    
            ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码    
            ftpClient.binary();    
            ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。    
            try {    
                ftpClient.sendServer("dele " + fileName + "\r\n");    
            } catch (Exception e) {    
                System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动");    
            }    
            ftpClient.closeServer();    
        } catch (Exception e) {    
            System.out.println("删除文件失败!");    
        }    
    }    
    // 下载ftp文件    
    public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){    
        try {    
            String ftpHost = kmConfig.getFtpHost();    
            int port = kmConfig.getFtpPort();    
            String userName = kmConfig.getFtpUser();    
            String passWord = kmConfig.getFtpPassword();    
            String path = kmConfig.getFtpPath();    
            FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。    
            ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码    
            ftpClient.binary();    
            ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。    
            try {    
                TelnetInputStream in = ftpClient.get(fileName);    
                byte[] bytes = new byte[];    
                int cnt=;    
                while ((cnt=in.read(bytes,,bytes.length)) != -) {    
                    outputStream.write(bytes, , cnt);    
                }    
                outputStream.close();    
                in.close();    
            } catch (Exception e) {    
                ftpClient.closeServer();    
                e.printStackTrace();    
            }    
            ftpClient.closeServer();    
        } catch (Exception e) {    
            System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");    
        }    
    }    
    //在ftp服务器上传件文件夹    
        public boolean createDir(String path,FtpClient ftpClient) throws Exception{    
                //进入到home文件夹下    
                ftpClient.cd("/home");    
                //创建远程文件夹    
               //远程命令包括    
               //USER    PORT    RETR    ALLO    DELE    SITE    XMKD    CDUP    FEAT<br>    
    //          PASS    PASV    STOR    REST    CWD     STAT    RMD     XCUP    OPTS<br>    
    //          ACCT    TYPE    APPE    RNFR    XCWD    HELP    XRMD    STOU    AUTH<br>    
    //          REIN    STRU    SMNT    RNTO    LIST    NOOP    PWD     SIZE    PBSZ<br>    
    //          QUIT    MODE    SYST    ABOR    NLST    MKD     XPWD    MDTM    PROT<br>    
    //               在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br>    
    //                    ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br>    
    //                    ftpclient.readServerResponse一定要在sendServer后调用<br>    
    //                    nameList("/test")获取指目录下的文件列表<br>    
    //                    XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>    
    //                    XRMD删除目录<br>    
    //                    DELE删除文件<br>    
           //通过远程命令 穿件一个files文件夹    
            ftpClient.sendServer("MKD "+ path + "\r\n");    
            //这个方法必须在 这两个方法中间调用 否则 命令不管用    
            ftpClient.binary();    
            ftpClient.readServerResponse();    
            return false;    
        }    
    /**    
      * 检查文件夹是否存在    
      * @param dir    
      * @param ftpClient    
      * @return    
      */    
        public boolean isDirExist(String dir, FtpClient ftpClient) {    
             try {    
                ftpClient.cd(dir);    
            } catch (Exception e) {    
                return false;    
            }    
            return true;    
        }    
    }

KmConfig.java代码如下:定义FTP服务器参数,包括登录的用户名密码之类的。

package ftpDemo;

public class KmConfig {

    //主机ip

    private String FtpHost = "";

    //端口号

    private int FtpPort;

    //ftp用户名

    private String FtpUser = "";

    //ftp密码

    private String FtpPassword = "";

    //ftp中的目录

    private String FtpPath = "";

    public String getFtpHost() {

        return FtpHost;

    }

    public void setFtpHost(String ftpHost) {

        FtpHost = ftpHost;

    }

    public int getFtpPort() {

        return FtpPort;

    }

    public void setFtpPort(int ftpPort) {

        FtpPort = ftpPort;

    }

    public String getFtpUser() {

        return FtpUser;

    }

    public void setFtpUser(String ftpUser) {

        FtpUser = ftpUser;

    }

    public String getFtpPassword() {

        return FtpPassword;

    }

    public void setFtpPassword(String ftpPassword) {

        FtpPassword = ftpPassword;

    }

    public String getFtpPath() {

        return FtpPath;

    }

    public void setFtpPath(String ftpPath) {

        FtpPath = ftpPath;

    }

}

下面是测试代码:

package ftpDemo;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.InputStream;

public class Test {

    public static void main(String[] args) {

        //设置ftp

        KmConfig km = new KmConfig();

        km.setFtpHost("...");

        km.setFtpPort();

        km.setFtpUser("test");

        km.setFtpPassword("");

        km.setFtpPath("KM");

        //上传到ftp

        ftpUtil util=new ftpUtil();

        File file = new File("F:/文章.jpg");

        InputStream in;

        try {

            in = new FileInputStream(file);

            util.upLoadFileFtp(km, in, "更改后的名字.jpg");

        } catch (FileNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}
时间: 2024-08-01 20:36:29

Java中实现FTP上传下载文件的功能,完整代码的相关文章

2.1.5基础之命令行链接ftp dos中的ftp上传下载文件

Windows命令行batcmd脚本的应用之自动备份 异地备份2.1.5基础之命令行链接ftp dos中的ftp上传下载文件 讲解环境 VMware Workstation 12 桌面虚拟计算机软件创建虚拟机安装操作系统:http://edu.51cto.com/course/10007.html PC1:192.168.1.201 远程地址:192.168.100.100:2001 windows service2008 pc1 Admin111FTP虚拟用户 fileaa fileaaPC2

Java中向ftp上传、下载文件

最近的一个项目跟ftp打交道很多,经常需要向ftp上传.下载文件,现在总结一下公共方法. 上传 /** * 文件上传 * * @param ip * host * @param port * 端口 * @param userName * 用户名 * @param passWord * 密码 * @param localpath * 上传文件在本地磁盘路径 * @param fileName * 文件名 * @param remotePath * 文件要上传到ftp服务器的路径 * @throws

华为设备,通过tftp和ftp上传下载文件

真机IP192.168.10.10/24 R1 G0/0/0 IP192.168.10.1/24 在真机上搭建tftp服务器实现路由上传下载 使用tftpd32搭建TFTP服务器 R1配置 <R1>system-view                  //进入系统视图 [R1]interface GigabitEthernet 0/0/0     //进接口 [R1-GigabitEthernet0/0/0]ip address 192.168.10.1 24   // 配置接口IP [R

ftp上传下载文件

上传文件: <?php /** * ftp上传文件 */ $ftp_server='localhost';//服务器 $ftp_port='21';//端口 $ftp_user_name='ftp';//用户名 $ftp_user_pass='zxcasdqwe123';//密码 $ftp_put_dir='/root';//上传目录 $ftp_conn_id = ftp_connect($ftp_server,$ftp_port); $ftp_login_result = ftp_login(

在windows中使用xshell上传下载文件到linux中

使用centos的文件上传下载小工具,可以快速的帮助我们从本地上传文件至服务器,或者是从服务器下载文件至本地. 工具/原料 Centos xshell 方法/步骤 首先使用xshell 连接上服务器.新建一个连接,分别输入用户名和密码,再输入主机IP地址及端口号,选择ssh连接方式. 在连接属性中指定接收文件的文件夹 配置好连接属性之后连接上服务器 文件上传命令为rz,下载命令为sz,但是Linux可能没有安装该上传工具,所以输入rz和sz的时候会提示找不到该命令.所以需要需要使用命令安装下该工

FTP上传下载文件(面向对象版)

# 服务端 import socketserver import os import json import hashlib import struct class MySocketServer(socketserver.BaseRequestHandler): users = [] @staticmethod def get_dic(): # 获取密码库 user_dic = {} file_name = 'register' if file_name not in os.listdir(os

Java中使用FTPClient上传下载

一.上传文件 原理就不介绍了,大家直接看代码吧 /** * Description: 向FTP服务器上传文件 * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保([email protected])创建 * @param url FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param path FTP服务器保存目录 *

linux中使用lftp上传下载文件

lftp是linux中一款ftp服务器相比windows中的ftp显得要复杂不少了,下面我来总结一下lftp文件上传,文件下载,及文件查找等等相关命令吧. lftp连接的几种方法,最常用的是lftp [email protected],这样可以不用明文输入密码. 1.lftp [email protected] 回车 输入密码 2.lftp name:[email protected] 回车 3.lftp site 回车login 用户名 密码 4.lftp 回车 open site 回车 lo

python实现ftp上传下载文件

#!/usr/bin/env python # encoding: utf-8 __author__ = "pwy" ''' 上传:上传文件并备份到其他目录 下载:下载文件,并删除远端文件 ''' from ftplib import FTP from time import sleep import os,datetime,logging from shutil import move HOST = "192.168.1.221" USER = "sxi