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

实例如下:

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
 */
publicclass
FTPUtil {

  privatestatic
FtpClient ftpClient = null;
  privatestatic
final
String url;
  privatestatic
final
int
port;
  privatestatic
final
String user;
  privatestatic
final
String password;
  privatestatic
final
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
   */
  privatestatic
void
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链接
   */
  publicstatic
void
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
   */
  publicstatic
boolean
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 是否删除成功
   */
  publicstatic
boolean
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
   */
  privatestatic
Boolean isDirExist(String dir) {
    try{
      ftpClient.changeDirectory(dir);
    }catch(Exception
 e) {
      returnfalse;
    }
    returntrue;
  }

  /**
   *
 创建文件夹
   *
   *
 @param dir
   *
 @param ftpClient
   *
 @throws Exception
   */
  privatestatic
void
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;

publicinterface
Constants {

  //路径分隔符
  publicstatic
String 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上传删除文件的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java基于Apache FTP实现文件上传、下载、修改文件名、删除

    Apache FTP 是应用比较广泛的FTP上传客户端工具,它易于操作,代码简略,结构清晰,是做FTP文件客户端管理软件的优先之选.FTP的操作包括:FTP文件上传(断点续传).FTP文件下载.FTP文件重命名.FTP文件删除,这些操作已经将FTP应用管理的方式发挥的淋漓尽致了,So 我一直都用此种方式来实现FTP文件服务器的管理工作:下附FTP工具代码. 1.FTP文件操作状态枚举类 package com.scengine.wtms.utils.ftp; public enum FTPSta

  • JDK1.7 Paths,Files类实现文件夹的复制与删除的实例

    实例如下所示: public static void copyFolder(String srcFolder, String destFolder) throws IOException { long startTime = System.currentTimeMillis(); final Path srcPath = Paths.get(srcFolder); // 这里多创建一级,就解决了没有外壳的问题 final Path destPath = Paths.get(destFolder,

  • Java FTP上传下载删除功能实例代码

    在没给大家上完整代码之前先给大家说下注意点: FTP上传下载,容易出现乱码,记得转换 package com.yinhai.team.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; impo

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

    实例如下: 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; impo

  • JavaScript设置表单上传时文件个数的方法

    本文实例讲述了JavaScript设置表单上传时文件个数的方法.分享给大家供大家参考.具体如下: 这是一个比较实用的功能,用JavaScript来设置表单上传文件时,根据需要生成上传表单,要几个生成几个,在网易邮箱.新浪邮箱的添加附件功能里都有这种功能,不过这一款没有删除表单的功能,如果输入的多了,只好重新来过啦 运行效果如下图所示: 具体代码如下: <title>JavaScript设置表单上传时的文件个数</title> <input type="button&

  • 利用HttpUrlConnection 上传 接收文件的实现方法

    如下所示: //客户端代码 public static void main(String[] args) throws IOException { DataInputStream in = null; OutputStream out = null; HttpURLConnection conn = null; JSONObject resposeTxt = null; InputStream ins = null; ByteArrayOutputStream outStream = null;

  • linux下上传下载文件夹的方法

    Linux下目录复制:本机->远程服务器 scp -r /home/shaoxiaohu/test1 zhidao@192.168.0.1:/home/test2 test1为源目录,test2为目标目录,zhidao@192.168.0.1为远程服务器的用户名和ip地址. Linux下目录复制:远程服务器->本机 scp -r zhidao@192.168.0.1:/home/test2 /home/shaoxiaohu/test1 zhidao@192.168.0.1为远程服务器的用户名和

  • ASP.NET解决上传大文件问题的方法

    上传文件的控件为:FileUpload Asp.Net对上传文件大小有限制.默认情况下用户只能上传4MB大小的文件,这会给用户带来不便.所以如果要上传40MB大小的文件.只能修改配置文件 关键代码如下 复制代码 代码如下: protected void btnSend_Click(object sender, EventArgs e) { try { //上传文件的思路: //获取上传文件的名称,此时为一个全路径的地址 string upFileName = fulFileName.FileNa

  • Linux下scp无密码上传 下载 文件 目录的方法

    在Linux下远程备份的时候,需要配置scp的 无密码复制文件.目录.就把这个设置整理如下: 本地服务器:A 远程服务器:B 1.在 A 上运行 ssh-keygen -t rsa 在/root/.ssh 下生成id_rsa 和 id_rsa.pub 两个文件 在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A 如图所示 2. 在 B 上也同样运行 ssh-keygen -t rsa 3. 在 B 的 /root/.ssh 下创建authorized_ke

  • Javaweb实现上传下载文件的多种方法

    在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为commons-fileupload依赖于commons-io这个包,所以需要下载这两个包commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar. 1.搭建环境 创建Web项目,将包导入到项目lib下 2.实现文件上传 (第一种上传的方法) 新建upload.jsp页面 <

  • Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置

    在Bootstrap fileinput中移除预览文件时可以通过配置initialPreviewConfig: [ { url:'deletefile',key:fileid } ] 来同步删除服务器上的文件和记录.但新上传的文件则需要其他方式来同步删除服务器记录. 在配置中遇到的一些问题,记录一下. fileinput在文件上传成功后会触发'fileuploaded'事件,移除图片后会触发'filesuccessremove'事件. 其中在fileuploaded中参数previewId是形如

  • 使用AndroidStudio上传忽略文件至SVN Server的解决办法

    在同组项目进行共享时,容易把本地的配置文件比如*.iml等文件上传至共享服务器,这样会对队友造成巨大的麻烦,为了解决这个问题,可以使用下面方法解决,下面以上传到服务器的app.iml文件为例. 一.在AS的Setting中取消忽略文件后缀".iml": 二.在Windows目录中找到当前项目下的"app.iml"文件,右键该文件,选中TortoiseSVN,如下图2位置: 图2 在该项下选择Delete,删除该文件,如下图3所示: 图3 三.删除该文件后,在当前目录

  • JAVA技术实现上传下载文件到FTP服务器(完整)

    具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见 FileZilla Server安装配置教程 .之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲

随机推荐