java使用ftp上传文件示例分享_java

复制代码 代码如下:

import java.io.ByteArrayInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.net.SocketException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

import org.apache.commons.io.IOUtils; 
import org.apache.commons.net.ftp.FTPClient; 

/**
 * class name:FTPFileTransmit <BR>
 * class description: please write your description <BR>
 * Remark: <BR>
 * @version 1.00 2011-8-9
 */ 
public class FTPFileTransmit { 

    private String ftpPath; 
    private String ftpName; 
    private String ftpPassword; 
    private String ftpServerIP; 

    public FTPFileTransmit() { 
        this.ftpPath = "xxx/xxx/"; 
        this.ftpName = "name"; 
        this.ftpPassword = "pass"; 
        this.ftpServerIP = "192.168.0.xx"; 
    } 

     
    /**
     * Method name: saveInFTP <BR>
     * Description: 把文件存储在FTP上 <BR>
     * Remark: <BR>
     * @param FolderName            示例"xxx/xxx/"
     * @param FileName              示例"thefilename"
     * @param data                  byte[]数组
     * @return  boolean<BR>
     */ 
    public boolean saveInFTP (String FolderName, String FileName, byte[] data) { 
        boolean flag = false; 

        // 创建FTP客户端  
        FTPClient ftpClient = new FTPClient(); 
        // 输入流用于读取文件  
//      FileInputStream fis = null;  
        ByteArrayInputStream bis = null; 

        try { 
            // 如果FolderName 和 FileName都不符合基本要求, 那么就没有必要进行ftp操作  
            if (FolderName != null 
                    && FolderName.compareTo("") != 0 
                    && FileName != null 
                    && FileName.compareTo("") != 0) { 

                // 建立FTP连接  
                ftpClient.connect(this.ftpServerIP); 

                // 如果登录成功后, 才进行创建输入流  
                if (ftpClient.login(this.ftpName, this.ftpPassword)) { 
//                  File srcClientFile = new File("C:/ParseXML.xml");  

                    // 实例化输入流  
//                  fis = new FileInputStream(srcClientFile);  

                    if (ftpClient.changeWorkingDirectory(FolderName)) { 
                        // 将byte[]写入到输入流中, 实例化  
                        bis = new ByteArrayInputStream(data); 

                        // 设置缓冲  
                        ftpClient.setBufferSize(1024); 

                        // 设置文件类型(二进制类型)  
                        if (ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)) { 
                            flag = ftpClient.storeFile(FileName, bis); 
                        } 
                    } 
                } 
            } 
        } catch (SocketException e) { 
            e.printStackTrace(); 
            flag = false; 
        } catch (IOException e) { 
            e.printStackTrace(); 
            flag = false; 
        } catch (Exception e) { 
            e.printStackTrace(); 
            flag = false; 
        } finally { 
            try { 
                // 关闭输入流  
                IOUtils.closeQuietly(bis); 
                // 关闭连接  
                ftpClient.disconnect(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 

        return flag; 
    } 

    /**
     * Method name: getFromFTP <BR>
     * Description: 从FTP上读取文件 <BR>
     * Remark: <BR>
     * @return  boolean<BR>
     */ 
    public boolean getFromFTP () { 
        boolean flag = false; 

        // 创建FTP客户端  
        FTPClient ftpClient = new FTPClient(); 
        // 输出流用于输出文件  
        FileOutputStream fos = null; 

        try { 
            // 建立FTP连接  
            ftpClient.connect(this.ftpServerIP); 
            // 如果登录成功后, 才进行创建输出流  
            if (ftpClient.login(this.ftpName, this.ftpPassword)) { 
                // FTP文件  
                String distinationFile = "/name/xxx/xxx/xxx文件"; 
                // 实例化输出流  
                fos = new FileOutputStream("C:/ParseXML_InFTP.xml"); 

                // 设置缓冲  
                ftpClient.setBufferSize(1024); 

                // 设置文件类型(二进制类型)  
                if (ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)) { 
                    ftpClient.retrieveFile(distinationFile, fos); 
                    flag = true; 
                } 
            } 
        } catch (SocketException e) { 
            e.printStackTrace(); 
            flag = false; 
        } catch (IOException e) { 
            e.printStackTrace(); 
            flag = false; 
        } catch (Exception e) { 
            e.printStackTrace(); 
            flag = false; 
        } finally { 
            try { 
                // 关闭输出流  
                IOUtils.closeQuietly(fos); 
                // 关闭连接  
                ftpClient.disconnect(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 

        return flag; 
    } 

    public boolean createDirectory() { 
        boolean flag = false; 

        // 创建FTP客户端  
        FTPClient ftpClient = new FTPClient(); 

        try { 
            // 建立FTP连接  
            ftpClient.connect(this.ftpServerIP); 
            // 如果登录成功后, 才进行操作  
            if (ftpClient.login(this.ftpName, this.ftpPassword)) { 

                // 切换文件路径, 到FTP上的"NNDD3"文件夹下  
                if (this.ftpPath != null && this.ftpPath.compareTo("") != 0 
                        && ftpClient.changeWorkingDirectory(this.ftpPath)) { 
                    SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd"); 
                    String time = f.format(new Date()); 

                    String FolderName = time + "_ReTransmit"; 
                    ftpClient.makeDirectory(FolderName); 
                    flag = true; 
                } 
            } 
        } catch (SocketException e) { 
            e.printStackTrace(); 
            flag = false; 
        } catch (IOException e) { 
            e.printStackTrace(); 
            flag = false; 
        } catch (Exception e) { 
            e.printStackTrace(); 
            flag = false; 
        } finally { 
            try { 
                // 关闭连接  
                ftpClient.disconnect(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 

        return flag; 
    } 

    public String[] getAllFolderNames () { 
        // 创建FTP客户端  
        FTPClient ftpClient = new FTPClient(); 

        try { 
            // 建立FTP连接  
            ftpClient.connect(this.ftpServerIP); 

            // 如果登录成功后, 才进行操作  
            if (ftpClient.login(this.ftpName, this.ftpPassword)) { 

                // 切换文件路径, 到FTP上的"NNDD3"文件夹下  
                if (this.ftpPath != null && this.ftpPath.compareTo("") != 0 
                        && ftpClient.changeWorkingDirectory(this.ftpPath)) { 
                    // 将当前时间减去2天, 删除的是前两天的数据包  
                    String time = minusTime(); 

                    String[] allNames = ftpClient.listNames(); 

                    String[] temp = new String[allNames.length]; 
                    // 初始化数组  
                    for (int j = 0; j < allNames.length; j ++) { 
                        temp[j] = ""; 
                    } 

                    // 找出要删除文件夹的名称  
                    for (int i = 0; i < allNames.length; i ++) { 
                        if (allNames[i].substring(0, 8).compareTo(time) <= 0) { 
                            temp[i] = allNames[i]; 
                        } 
                    } 

                    return temp; 
                } 
            } 
        } catch (SocketException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } finally { 
            try { 
                // 关闭连接  
                ftpClient.disconnect(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 

        return null; 
    } 

    /**
     * 
     * Method name: minusTime <BR>
     * Description: 获取钱两天的时间,如2011-8-1的前两天就是2011-7-30 <BR>
     * Remark: <BR>
     * @return  String<BR>
     */ 
    private String minusTime() { 
        SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd");    
        Date d = new Date(); 
        String timeMinus2 = df.format(new Date(d.getTime() - 2 * 24 * 60 * 60 * 1000));    
        return timeMinus2; 
    } 

    public static void main(String[] args) { 
        FTPFileTransmit ftpFileTransmit = new FTPFileTransmit(); 
        ftpFileTransmit.deleteFoldersInFTP(); 

//      boolean flag = ftpFileTransmit.createDirectory();  
//      if (flag) {  
//          System.out.println("****** FTP文件夹创建成功 ******");  
//      }  

//      String FolderName = ftpFileTransmit.ftpPath + "20110809_ReTransmit/";  
//      byte[] data = new byte[1024];  
//      for (int i = 0; i < data.length; i ++) {  
//          data[i] = 'a';  
//      }  
//      boolean flag = ftpFileTransmit.saveInFTP(FolderName, "2011080912345678" ,data);  
//      if (flag) {  
//          System.out.println("****** FTP文件夹创建成功 ******");  
//      }  
    } 
}

时间: 2024-10-03 18:20:16

java使用ftp上传文件示例分享_java的相关文章

PHP实现ftp上传文件示例_php技巧

FTP上传是PHP实现的一个常见且非常重要的应用技巧,今天就来与大家分享一下PHP实现FTP上传文件的简单示例.希望对大家的PHP学习能带来一定的帮助. 主要代码如下: function make_directory($ftp_stream, $dir){ // if directory already exists or can be immediately created return true if ($this->ftp_is_dir($ftp_stream, $dir) || @ftp

FTP上传文件示例

 首先,你需要一个测试环境,我在自己的机器上搭建了一个FTP Server,搭建Server有一些比较优秀的软件,例如:Crob FTP Server,不过这是一个收费软件,虽然提供试用版,但要在公网上使用的话,还是买个注册号吧!     下载地址: Crob FTP Server V3.7.0 Build 196 简体中文版 http://www.skycn.com/soft/11246.html     中文软件,大家都是学技术的,怎么搭建我就不说了.     相当傻瓜式的,上传代码只有寥寥

Java组件FileUpload上传文件实现代码_java

一般在用Servlet处理表单元素时,表单元素都是一些简单的文本,Servlet很容易用Request.getParameter()就可以处理.但是当表单不止包含一些简单的文本,比如有上传文件域时,Servlet直接从HttpServletRequest对象中解析出复合表单的每一个子部分仍然是一项非常复杂的工作. 为了简化对"multipart/form-data"类型数据的处理过程,可以采用相应的组件进行处理,这样可以节省很大的编码.支持重用,效率也挺高. 对于Java的组件也有一些

java使用rmi传输大文件示例分享_java

为什么要用RMI​在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由于做的是富客户端应用,最终将技术选定在了RMI和Java-sockets两种之间,其中RMI的灵活性不高,客户端和服务器端都必须是java编写,但使用比较方便,反观java-sockets,虽然比较灵活,但需要自己规定服务器端和客户端之间的通信协议.比较麻烦,几经权衡,最终还是选择RMI来进行服务器-客户端通信 文件上传问题在使用java-rmi的过程中,必然会遇到一个文件上传的问题,由于在rmi中无法传输文件流(比

php实现通过ftp上传文件_php技巧

大概原理 遍历项目中的所有非排除文件,然后获取 文件修改时间晚于文件上一次修改时间 的文件 然后将这些文件,通过ftp上传到对应的目录 具体代码如下: 因为只是工具,代码很乱,见谅 <?php error_reporting(7); if ($_SERVER['SERVER_ADDR'])exit;//禁止在web服务器下运行 $_GET['exclude'] = array('number.txt','uploads','Zend','docs','cache','You','managesd

suse linux java ftp上传文件名称导致报错,求大神指导

问题描述 suse linux java ftp上传文件名称导致报错,求大神指导 上传时"school_user.questionext.csv"就因为文件名称多了一个"."导致报错 553 Could not create file.

服务器-Java FTP上传文件夹,只能上传到FTP根目录,如何上传到指定目录

问题描述 Java FTP上传文件夹,只能上传到FTP根目录,如何上传到指定目录 Java FTP上传文件夹,只能上传到FTP根目录,如何上传到指定目录 如果文件较大,如何完整的上传到FTP的服务器 解决方案 用ftpClient.changeWorkingDirectory更改路径,路径不必以/开始

ftp 上传文件异常

问题描述 大家好:请帮我看看,谢谢贴上部分代码:......ftpClient.binary();Filefile_in=newFile(filename);if(!file_in.exists())return-1;if(file_in.length()==0)return-2;os=ftpClient.put(newname);result=file_in.length();is=newFileInputStream(file_in);byte[]bytes=newbyte[1024];in

php-在Linux FTP上传文件到网页之后 网页出现了404

问题描述 在Linux FTP上传文件到网页之后 网页出现了404 网页变成了这个样子,但是我默认首页已经设置成了index.php,然后我的主机也是能解析PHP的. 在这里我已经把我的文件放在了htdocs下,但是还是出现了404的问题,求解答一下,谢谢啦 解决方案 Linux中上传文件到ftp 解决方案二: 403是权限问题,你这个不是404 解决方案三: 确认一下目录访问权限有没有设置 解决方案四: 访问权限的问题,查一下访问权限的设置 解决方案五: 403是权限不够,请确认目录是否有权限