首页 > 开发 > Java > 正文

JDK1.7以上javaFTP上传删除文件的实现方法

2024-07-13 10:13:37
字体:
来源:转载
供稿:网友

实例如下:

packagecom.itv.launcher.util; importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.util.Properties;importjava.util.StringTokenizer; importsun.net.TelnetOutputStream;importsun.net.ftp.FtpClient;importsun.net.ftp.FtpProtocolException; /** * FTP上传工具类 * * @author yanzhou * @version v1.0 */publicclassFTPUtil {   privatestaticFtpClient ftpClient = null;  privatestaticfinal String url;  privatestaticfinal int port;  privatestaticfinal String user;  privatestaticfinal String password;  privatestaticfinal String remoteFilePath;   static{    Properties FTPPro = ReadFTPProperties.getMsgFromPro();    url = FTPPro.getProperty("FTP_URL");    port = Integer.parseInt(FTPPro.getProperty("FTP_PORT"));    user = FTPPro.getProperty("FTP_USER");    password = FTPPro.getProperty("FTP_PASSWORD");    remoteFilePath = FTPPro.getProperty("FTP_REMOTE_FILEPATH");   }   /**   * 链接FTP   * @throws FtpProtocolException    */  privatestaticvoid connectFTP() throwsFtpProtocolException {    try{      ftpClient = FtpClient.create();      ftpClient.connect(newInetSocketAddress(url, port));      ftpClient.login(user, password.toCharArray());      ftpClient.setBinaryType();      if(!"".equals(remoteFilePath) && remoteFilePath != null) {        ftpClient.changeDirectory(remoteFilePath);      }    }catch(IOException e) {      e.printStackTrace();    }  }   /**   * 关闭FTP链接   */  publicstaticvoid closeFTP() {    try{      if(ftpClient != null) {        ftpClient.close();      }    }catch(IOException e) {      e.printStackTrace();    }  }   /**   * 上传文件到FTP   * @param file file文件,struts2从页面得到的File类型   * @param filePath 要保存在FTP上的路径(文件夹)   * @param fileName 文件名(test001.jpg)   * @return 文件是否上传成功   * @throws Exception   */  publicstaticboolean upload(File file, String filePath, String fileName) {    TelnetOutputStream to = null;    FileInputStream fi = null;    filePath = remoteFilePath + Constants.FILE_SEPARATOR + filePath;    try{      if(file != null) {        connectFTP();        if(!isDirExist(filePath.replace("//","/"))) {          createDir(filePath.replace("//","/"));          ftpClient.changeDirectory(filePath.replace("//","/"));        }        fi = newFileInputStream(file);        to = (TelnetOutputStream) ftpClient.putFileStream(fileName, true);        byte[] bytes = newbyte[1024];        inti = fi.read(bytes);        while(i != -1) {          to.write(bytes);          i = fi.read(bytes);        }      }      returntrue;    }catch(FileNotFoundException e1) {      returnfalse;    }catch(IOException e2) {      returnfalse;    }catch(Exception e) {      returnfalse;    }finally{      if(fi != null) {        try{          fi.close();        }catch(IOException e) {          e.printStackTrace();        }      }      if(to != null) {        try{          to.flush();          to.close();        }catch(IOException e) {          e.printStackTrace();        }      }      closeFTP();    }  }   /**   * 删除FTP制定目录下的文件   * @param filePath 文件在FTP存储的路径   * @param fileName 要删除的文件名称   * @return 是否删除成功   */  publicstaticboolean deleteFileFtp(String filePath, String fileName){     try{      connectFTP();      filePath = remoteFilePath + Constants.FILE_SEPARATOR + filePath + Constants.FILE_SEPARATOR;      if(!isDirExist(filePath.replace("//","/"))) {        returnfalse;      }      ftpClient.changeDirectory(filePath.replace("//","/"));      ftpClient.deleteFile(fileName);      returntrue;    }catch(Exception e) {      e.printStackTrace();      returnfalse;    }finally{      closeFTP();    }  }  /**   * 检查文件夹是否存在   *   * @param dir   * @param ftpClient   * @return   */  privatestaticBoolean isDirExist(String dir) {    try{      ftpClient.changeDirectory(dir);    }catch(Exception e) {      returnfalse;    }    returntrue;  }   /**   * 创建文件夹   *   * @param dir   * @param ftpClient   * @throws Exception   */  privatestaticvoid createDir(String dir) throwsException {    ftpClient.setAsciiType();    StringTokenizer s = newStringTokenizer(dir,"/");// sign    s.countTokens();    String pathName = "";    while(s.hasMoreElements()) {      pathName = pathName + "/"+ (String) s.nextElement();      try{        ftpClient.makeDirectory(pathName);      }catch(Exception e) {        e = null;      }    }    ftpClient.setBinaryType();   } }

2. 常量类,系统的路径分隔符

packagecom.itv.launcher.util; publicinterfaceConstants {     //路径分隔符  publicstaticString FILE_SEPARATOR = System.getProperty("file.separator");}

3. FTP链接的配置properties文件,包括用户名密码一些信息    

#FTP的IP地址FTP_URL=127.0.0.1#FTP端口号FTP_PORT=1234#用户名FTP_USER=yanzhou#密码FTP_PASSWORD=abcdefg12345#FTP账号目录FTP_REMOTE_FILEPATH=

以上这篇JDK1.7以上javaFTP上传删除文件的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表