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服务器上传文件夹的方法,希望大家喜欢。