一个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开发者来说是非常重要的。
Java 实现FTP服务器是一项常见的开发任务,这通常涉及到使用Java编程语言来构建一个能够处理文件传输协议(FTP)请求的应用程序。在这个过程中,开发者需要理解FTP的基本原理,并掌握相关的Java库来简化实现。 FTP...
本文将深入探讨如何使用Java实现FTP协议中的服务器和客户端。通过学习这些知识点,开发者可以构建自己的FTP应用,进行文件的上传、下载和管理。 首先,我们要了解FTP协议的基本工作原理。FTP基于TCP/IP模型,通过...
本文将深入探讨如何使用Java实现FTP文件上传和下载,包括基本概念、核心类库、实现步骤以及测试用例。 首先,Java通过`java.net`和`org.apache.commons.net.ftp`两个主要库支持FTP操作。`java.net`库中的`FTPClient...
本项目提供了一套完整的Java实现FTP操作的代码示例,包括上传、下载、删除服务器上的指定文件以及断点续传功能。以下是对这些功能的详细解释: 1. **FTP连接与登录**: 在进行任何FTP操作之前,首先需要建立一个...
这个"JAVA实现FTP协议中的服务器和客户端(完善版).rar"压缩包文件,显然包含了一个使用Java编程语言实现FTP协议的完整项目。以下是关于FTP协议、Java编程以及如何实现FTP服务器和客户端的关键知识点: 1. FTP协议...
这篇博客“Java实现FTP上传与下载”可能详细介绍了如何利用Java来实现FTP客户端的功能,包括文件的上传和下载。这里我们将深入探讨Java中实现FTP操作的核心知识点。 首先,Java通过`commons-net`库提供了对FTP的...
### 用Java实现FTP服务器的关键知识点 #### 一、FTP基础知识 **FTP(File Transfer Protocol)**,即文件传输协议,是一种用于在网络上进行文件传输的标准协议。FTP支持两种主要的数据传输方式:ASCII模式和二进制...
本文将深入探讨如何使用Java实现FTP断点续传,并提供相关的源码整理。 FTP断点续传的核心原理是通过FTP协议中的REST(Restart)命令来实现。REST命令告诉服务器从指定的位置开始继续传输数据,而不是重新开始。在...
以上就是关于"java实现ftp上传jar包"的相关知识点,涵盖了FTP协议、相关库的使用、JAR文件的处理以及基本的Java FTP操作。在实际项目中,你可能还需要考虑其他因素,如连接超时、重试策略、文件权限管理等。
总结,Java实现FTP上传和下载需要借助Apache Commons Net库,通过FTPClient类进行操作。同时,如果涉及XML文件,还需要理解并应用DOM、SAX或StAX解析技术。在实现过程中,要注意文件流的管理和异常处理,确保操作的...
以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。 首先,Java通过`java.net`和`javax.net`包提供了FTP功能,但这些原生API并不易用。因此,大多数开发人员会使用第三方库如Apache...
Java实现FTP批量大文件上传下载 一、Java FTP客户端库的选择 在选择Java FTP客户端库时,需要考虑多个因素,例如性能、安全性、可靠性等。当前有多种FTP客户端库可供选择,例如J-FTP、SimpleFTP、FTPClient等。每...
总结来说,使用JAVA实现FTP协议文件上传,我们需要理解FTP的基本概念,掌握Apache Commons Net库的使用,以及处理网络连接、文件传输等相关操作。通过这些步骤,我们可以编写出一个完整的FTP文件上传程序。
通过Java实现FTP批量下载文件以及解压的功能,可以极大地提高工作效率,特别是在处理大量数据时。以下是一份详细的步骤介绍: 首先,我们需要引入Java的FTP客户端库,如Apache Commons Net库。这个库提供了丰富的...
Java 实现 FTP 批量大文件上传下载 本文介绍了如何使用 Java 实现 FTP 服务器上的大批量文件的上传和下载,处理大文件的上传和下载。通过 Java 现有的可用的库来编写 FTP 客户端代码,并开发成 Applet 控件,做成...
总之,Java实现FTP服务器是一个涉及网络编程、文件操作和协议解析的综合项目。通过上述步骤,我们可以构建一个基本的FTP服务器。不过,实际的FTP服务器可能会更复杂,包括支持SSL/TLS加密、多线程处理多个并发连接、...