`

JAVA 实现FTP

    博客分类:
  • java
 
阅读更多

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

001 package ftpDemo;
002 import java.io.DataOutputStream;
003 import java.io.InputStream;
004 import java.io.OutputStream;
005 import sun.net.TelnetInputStream;
006 import sun.net.TelnetOutputStream;
007 import sun.net.ftp.FtpClient;
008 public class ftpUtil {
009 // 上传文件至FTP通用方法
010 public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){
011     try {
012         String ftpHost = kmConfig.getFtpHost();
013         int port = kmConfig.getFtpPort();
014         String userName = kmConfig.getFtpUser();
015         String passWord = kmConfig.getFtpPassword();
016         String path = kmConfig.getFtpPath();
017         FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
018         ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
019         ftpClient.binary();
020         ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。
021         TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName为上传的文件名
022         DataOutputStream dataOut = new DataOutputStream(telnetOut);
023         byte buffer[] = new byte[1024 * 1024];
024         int count = 0;
025         while ((count = is.read(buffer)) != -1) {
026             dataOut.write(buffer, 0, count);
027         }
028         telnetOut.close();
029         dataOut.close();
030         ftpClient.closeServer();
031     } catch (Exception e) {
032         System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动");
033     }
034 }
035 // 删除文件至FTP通用方法
036 public static void deleteFileFtp(KmConfig kmConfig,String fileName){
037     try {
038         String ftpHost = kmConfig.getFtpHost();
039         int port = kmConfig.getFtpPort();
040         String userName = kmConfig.getFtpUser();
041         String passWord = kmConfig.getFtpPassword();
042         String path = kmConfig.getFtpPath();
043         FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
044         ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
045         ftpClient.binary();
046         ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。
047         try {
048             ftpClient.sendServer("dele " + fileName + "\r\n");
049         } catch (Exception e) {
050             System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动");
051         }
052         ftpClient.closeServer();
053     } catch (Exception e) {
054         System.out.println("删除文件失败!");
055     }
056 }
057 // 下载ftp文件
058 public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){
059     try {
060         String ftpHost = kmConfig.getFtpHost();
061         int port = kmConfig.getFtpPort();
062         String userName = kmConfig.getFtpUser();
063         String passWord = kmConfig.getFtpPassword();
064         String path = kmConfig.getFtpPath();
065         FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
066         ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
067         ftpClient.binary();
068         ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。
069         try {
070             TelnetInputStream in = ftpClient.get(fileName);
071             byte[] bytes = new byte[1024];
072             int cnt=0;
073             while ((cnt=in.read(bytes,0,bytes.length)) != -1) {
074                 outputStream.write(bytes, 0, cnt);
075             }
076             outputStream.close();
077             in.close();
078         } catch (Exception e) {
079             ftpClient.closeServer();
080             e.printStackTrace();
081         }
082         ftpClient.closeServer();
083     } catch (Exception e) {
084         System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");
085     }
086 }
087 //在ftp服务器上传件文件夹
088     public boolean createDir(String path,FtpClient ftpClient) throws Exception{
089             //进入到home文件夹下
090             ftpClient.cd("/home");
091             //创建远程文件夹
092            //远程命令包括
093            //USER    PORT    RETR    ALLO    DELE    SITE    XMKD    CDUP    FEAT<br>
094 //          PASS    PASV    STOR    REST    CWD     STAT    RMD     XCUP    OPTS<br>
095 //          ACCT    TYPE    APPE    RNFR    XCWD    HELP    XRMD    STOU    AUTH<br>
096 //          REIN    STRU    SMNT    RNTO    LIST    NOOP    PWD     SIZE    PBSZ<br>
097 //          QUIT    MODE    SYST    ABOR    NLST    MKD     XPWD    MDTM    PROT<br>
098 //               在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br>
099 //                    ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br>
100 //                    ftpclient.readServerResponse一定要在sendServer后调用<br>
101 //                    nameList("/test")获取指目录下的文件列表<br>
102 //                    XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>
103 //                    XRMD删除目录<br>
104 //                    DELE删除文件<br>
105        //通过远程命令 穿件一个files文件夹
106         ftpClient.sendServer("MKD "+ path + "\r\n");
107         //这个方法必须在 这两个方法中间调用 否则 命令不管用
108         ftpClient.binary();
109         ftpClient.readServerResponse();
110         return false;
111     }
112 /**
113   * 检查文件夹是否存在
114   * @param dir
115   * @param ftpClient
116   * @return
117   */
118     public boolean isDirExist(String dir, FtpClient ftpClient) {
119          try {
120             ftpClient.cd(dir);
121         } catch (Exception e) {
122             return false;
123         }
124         return true;
125     }
126 }

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

01 package ftpDemo;
02 public class KmConfig {
03     //主机ip
04     private String FtpHost = "";
05     //端口号
06     private int FtpPort;
07     //ftp用户名
08     private String FtpUser = "";
09     //ftp密码
10     private String FtpPassword = "";
11     //ftp中的目录
12     private String FtpPath = "";
13     public String getFtpHost() {
14         return FtpHost;
15     }
16     public void setFtpHost(String ftpHost) {
17         FtpHost = ftpHost;
18     }
19     public int getFtpPort() {
20         return FtpPort;
21     }
22     public void setFtpPort(int ftpPort) {
23         FtpPort = ftpPort;
24     }
25     public String getFtpUser() {
26         return FtpUser;
27     }
28     public void setFtpUser(String ftpUser) {
29         FtpUser = ftpUser;
30     }
31     public String getFtpPassword() {
32         return FtpPassword;
33     }
34     public void setFtpPassword(String ftpPassword) {
35         FtpPassword = ftpPassword;
36     }
37     public String getFtpPath() {
38         return FtpPath;
39     }
40     public void setFtpPath(String ftpPath) {
41         FtpPath = ftpPath;
42     }
43 }

下面是测试代码:

01 package ftpDemo;
02 import java.io.File;
03 import java.io.FileInputStream;
04 import java.io.FileNotFoundException;
05 import java.io.InputStream;
06 public class Test {
07     public static void main(String[] args) {
08         //设置ftp
09         KmConfig km = new KmConfig();
10         km.setFtpHost("172.20.32.48");
11         km.setFtpPort(21);
12         km.setFtpUser("test");
13         km.setFtpPassword("111111");
14         km.setFtpPath("KM");
15         //上传到ftp
16         ftpUtil util=new ftpUtil();
17         File file = new File("F:/文章2.jpg");
18         InputStream in;
19         try {
20             in = new FileInputStream(file);
21             util.upLoadFileFtp(km, in, "更改后的名字.jpg");
22         } catch (FileNotFoundException e) {
23             // TODO Auto-generated catch block
24             e.printStackTrace();
25         }
26     }
27 }
分享到:
评论

相关推荐

    java实现ftp自动上传文件

    Java 实现 FTP 自动上传文件是一项常见的任务,尤其在自动化部署、数据同步...总的来说,通过Java实现FTP自动上传文件涉及到网络通信、文件操作、日志处理等多个方面,理解这些概念对于Java开发者来说是非常重要的。

    java实现FTP服务器

    Java 实现FTP服务器是一项常见的开发任务,这通常涉及到使用Java编程语言来构建一个能够处理文件传输协议(FTP)请求的应用程序。在这个过程中,开发者需要理解FTP的基本原理,并掌握相关的Java库来简化实现。 FTP...

    JAVA实现FTP协议中的服务器和客户端\\

    本文将深入探讨如何使用Java实现FTP协议中的服务器和客户端。通过学习这些知识点,开发者可以构建自己的FTP应用,进行文件的上传、下载和管理。 首先,我们要了解FTP协议的基本工作原理。FTP基于TCP/IP模型,通过...

    用JAVA实现Ftp文件上传下载

    本文将深入探讨如何使用Java实现FTP文件上传和下载,包括基本概念、核心类库、实现步骤以及测试用例。 首先,Java通过`java.net`和`org.apache.commons.net.ftp`两个主要库支持FTP操作。`java.net`库中的`FTPClient...

    java实现ftp的所有操作

    本项目提供了一套完整的Java实现FTP操作的代码示例,包括上传、下载、删除服务器上的指定文件以及断点续传功能。以下是对这些功能的详细解释: 1. **FTP连接与登录**: 在进行任何FTP操作之前,首先需要建立一个...

    JAVA实现FTP协议中的服务器和客户端(完善版).rar

    这个"JAVA实现FTP协议中的服务器和客户端(完善版).rar"压缩包文件,显然包含了一个使用Java编程语言实现FTP协议的完整项目。以下是关于FTP协议、Java编程以及如何实现FTP服务器和客户端的关键知识点: 1. FTP协议...

    Java实现FTP上传与下载

    这篇博客“Java实现FTP上传与下载”可能详细介绍了如何利用Java来实现FTP客户端的功能,包括文件的上传和下载。这里我们将深入探讨Java中实现FTP操作的核心知识点。 首先,Java通过`commons-net`库提供了对FTP的...

    用Java实现FTP服务器解决方案.doc

    ### 用Java实现FTP服务器的关键知识点 #### 一、FTP基础知识 **FTP(File Transfer Protocol)**,即文件传输协议,是一种用于在网络上进行文件传输的标准协议。FTP支持两种主要的数据传输方式:ASCII模式和二进制...

    java实现ftp断点续传Java实用源码整理learns

    本文将深入探讨如何使用Java实现FTP断点续传,并提供相关的源码整理。 FTP断点续传的核心原理是通过FTP协议中的REST(Restart)命令来实现。REST命令告诉服务器从指定的位置开始继续传输数据,而不是重新开始。在...

    java实现ftp上传jar包

    以上就是关于"java实现ftp上传jar包"的相关知识点,涵盖了FTP协议、相关库的使用、JAR文件的处理以及基本的Java FTP操作。在实际项目中,你可能还需要考虑其他因素,如连接超时、重试策略、文件权限管理等。

    JAVA实现ftp上传,下载

    总结,Java实现FTP上传和下载需要借助Apache Commons Net库,通过FTPClient类进行操作。同时,如果涉及XML文件,还需要理解并应用DOM、SAX或StAX解析技术。在实现过程中,要注意文件流的管理和异常处理,确保操作的...

    Java实现FTP文件上传和下载

    以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。 首先,Java通过`java.net`和`javax.net`包提供了FTP功能,但这些原生API并不易用。因此,大多数开发人员会使用第三方库如Apache...

    Java实现FTP批量大文件上传下载.pdf

    Java实现FTP批量大文件上传下载 一、Java FTP客户端库的选择 在选择Java FTP客户端库时,需要考虑多个因素,例如性能、安全性、可靠性等。当前有多种FTP客户端库可供选择,例如J-FTP、SimpleFTP、FTPClient等。每...

    JAVA实现FTP协议文件上传

    总结来说,使用JAVA实现FTP协议文件上传,我们需要理解FTP的基本概念,掌握Apache Commons Net库的使用,以及处理网络连接、文件传输等相关操作。通过这些步骤,我们可以编写出一个完整的FTP文件上传程序。

    java实现Ftp批量下载文件及解压

    通过Java实现FTP批量下载文件以及解压的功能,可以极大地提高工作效率,特别是在处理大量数据时。以下是一份详细的步骤介绍: 首先,我们需要引入Java的FTP客户端库,如Apache Commons Net库。这个库提供了丰富的...

    Java实现FTP批量大文件上传下载

    Java 实现 FTP 批量大文件上传下载 本文介绍了如何使用 Java 实现 FTP 服务器上的大批量文件的上传和下载,处理大文件的上传和下载。通过 Java 现有的可用的库来编写 FTP 客户端代码,并开发成 Applet 控件,做成...

    java 实现ftp 服务器

    总之,Java实现FTP服务器是一个涉及网络编程、文件操作和协议解析的综合项目。通过上述步骤,我们可以构建一个基本的FTP服务器。不过,实际的FTP服务器可能会更复杂,包括支持SSL/TLS加密、多线程处理多个并发连接、...

Global site tag (gtag.js) - Google Analytics