Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法
程序员文章站
2024-03-06 20:16:08
一个java 实现ftp功能的代码,包括了服务器的设置模块,并包括有上传文件至ftp的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上传文件夹、检测文件夹是否存在...
一个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服务器上传文件夹的方法,希望大家喜欢。