Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法
一个JAVA实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上传文件夹、检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,JavaFTP主文件代码:
packageftpDemo; importjava.io.DataOutputStream; importjava.io.InputStream; importjava.io.OutputStream; importsun.net.TelnetInputStream; importsun.net.TelnetOutputStream; importsun.net.ftp.FtpClient; publicclassftpUtil{ //上传文件至FTP通用方法 publicstaticvoidupLoadFileFtp(KmConfigkmConfig,InputStreamis,StringfileName){ try{ StringftpHost=kmConfig.getFtpHost(); intport=kmConfig.getFtpPort(); StringuserName=kmConfig.getFtpUser(); StringpassWord=kmConfig.getFtpPassword(); Stringpath=kmConfig.getFtpPath(); FtpClientftpClient=newFtpClient(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服务器上保存上传文件的路径。 TelnetOutputStreamtelnetOut=ftpClient.put(fileName);//fileName为上传的文件名 DataOutputStreamdataOut=newDataOutputStream(telnetOut); bytebuffer[]=newbyte[*]; intcount=; while((count=is.read(buffer))!=-){ dataOut.write(buffer,,count); } telnetOut.close(); dataOut.close(); ftpClient.closeServer(); }catch(Exceptione){ System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动"); } } //删除文件至FTP通用方法 publicstaticvoiddeleteFileFtp(KmConfigkmConfig,StringfileName){ try{ StringftpHost=kmConfig.getFtpHost(); intport=kmConfig.getFtpPort(); StringuserName=kmConfig.getFtpUser(); StringpassWord=kmConfig.getFtpPassword(); Stringpath=kmConfig.getFtpPath(); FtpClientftpClient=newFtpClient(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(Exceptione){ System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动"); } ftpClient.closeServer(); }catch(Exceptione){ System.out.println("删除文件失败!"); } } //下载ftp文件 publicstaticvoiddownloadFileFtp(KmConfigkmConfig,StringfileName,StringclientFileName,OutputStreamoutputStream){ try{ StringftpHost=kmConfig.getFtpHost(); intport=kmConfig.getFtpPort(); StringuserName=kmConfig.getFtpUser(); StringpassWord=kmConfig.getFtpPassword(); Stringpath=kmConfig.getFtpPath(); FtpClientftpClient=newFtpClient(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{ TelnetInputStreamin=ftpClient.get(fileName); byte[]bytes=newbyte[]; intcnt=; while((cnt=in.read(bytes,,bytes.length))!=-){ outputStream.write(bytes,,cnt); } outputStream.close(); in.close(); }catch(Exceptione){ ftpClient.closeServer(); e.printStackTrace(); } ftpClient.closeServer(); }catch(Exceptione){ System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动"); } } //在ftp服务器上传件文件夹 publicbooleancreateDir(Stringpath,FtpClientftpClient)throwsException{ //进入到home文件夹下 ftpClient.cd("/home"); //创建远程文件夹 //远程命令包括 //USERPORTRETRALLODELESITEXMKDCDUPFEAT<br> //PASSPASVSTORRESTCWDSTATRMDXCUPOPTS<br> //ACCTTYPEAPPERNFRXCWDHELPXRMDSTOUAUTH<br> //REINSTRUSMNTRNTOLISTNOOPPWDSIZEPBSZ<br> //QUITMODESYSTABORNLSTMKDXPWDMDTMPROT<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(); returnfalse; } /** *检查文件夹是否存在 *@paramdir *@paramftpClient *@return */ publicbooleanisDirExist(Stringdir,FtpClientftpClient){ try{ ftpClient.cd(dir); }catch(Exceptione){ returnfalse; } returntrue; } }
KmConfig.java代码如下:定义FTP服务器参数,包括登录的用户名密码之类的。
packageftpDemo; publicclassKmConfig{ //主机ip privateStringFtpHost=""; //端口号 privateintFtpPort; //ftp用户名 privateStringFtpUser=""; //ftp密码 privateStringFtpPassword=""; //ftp中的目录 privateStringFtpPath=""; publicStringgetFtpHost(){ returnFtpHost; } publicvoidsetFtpHost(StringftpHost){ FtpHost=ftpHost; } publicintgetFtpPort(){ returnFtpPort; } publicvoidsetFtpPort(intftpPort){ FtpPort=ftpPort; } publicStringgetFtpUser(){ returnFtpUser; } publicvoidsetFtpUser(StringftpUser){ FtpUser=ftpUser; } publicStringgetFtpPassword(){ returnFtpPassword; } publicvoidsetFtpPassword(StringftpPassword){ FtpPassword=ftpPassword; } publicStringgetFtpPath(){ returnFtpPath; } publicvoidsetFtpPath(StringftpPath){ FtpPath=ftpPath; } }
下面是测试代码:
packageftpDemo; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.InputStream; publicclassTest{ publicstaticvoidmain(String[]args){ //设置ftp KmConfigkm=newKmConfig(); km.setFtpHost("..."); km.setFtpPort(); km.setFtpUser("test"); km.setFtpPassword(""); km.setFtpPath("KM"); //上传到ftp ftpUtilutil=newftpUtil(); Filefile=newFile("F:/文章.jpg"); InputStreamin; try{ in=newFileInputStream(file); util.upLoadFileFtp(km,in,"更改后的名字.jpg"); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
以上代码是小编给大家介绍关于Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法,希望大家喜欢。