一个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();
}
}
}
以上代码是小编给大家介绍关于java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法,希望大家喜欢。
更多java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法。