一个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自动上传整个磁盘所有文件,包括目录,下面的JTextArea读取Log4j及命令行的信息,采用第三方ftpClient.不过下载的部分还没有时间去做.
java实现FTP服务器
java实现FTP多线程断点续传
用JAVA实现Ftp文件上传下载,提供实现方法和测试用例
这是用java实现ftp操作的一些代码,里面有上传,下载,删除服务器上制定文件以及断点续传的操作!!希望能帮助需要的人!!
用Java实现FTP服务器解决方案.doc
java实现ftp断点续传Java实用源码整理learns
JAVA实现FTP协议中的服务器和客户端(完善版)
JAVA实现ftp上传,下载,实现java语言编写上传ftp
JAVA实现FTP协议文件上传
java实现ftp上传jar包,里边包括edtftpj.jar、commons-net-1.4.1.jar、jakarta-oro-2.0.8.jar
JAVA 实现 FTP 客户端功能,这个功能对开发FTP 功能很使用
用Java实现FTP批量大文件上传下载(一) 本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量、大文件的上传下载控件。文章在比较了一系列FTP客户库的基础上...
山东大学计算机网络课程设计,利用Java实现类似于FTP的相关功能,用户登录,用户上传文件,下载文件,删除文件。使用Javasocket的作为传输底层。
java实现ftp论文 FTP客户端的设计与实现 摘要 FTP 是File Transfer Protocol(文件传输协议)的英文简称。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器...
用Java实现FTP批量大文件上传下载.doc 用Java实现FTP批量大文件上传下载.doc 用Java实现FTP批量大文件上传下载.doc
java 实现 ftp