FTP上传和下载文件
来源:互联网 发布:java base64 中文乱码 编辑:程序博客网 时间:2024/05/16 07:03
package ftp;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.apache.commons.io.IOUtils;import org.apache.commons.net.ftp.FTPClient;/** * 使用FTP协议向服务器上传、下载文件 * @author 丑哥最风骚 * @date 2014-04-02 */public class FtpUtil {public final static String URL = "10.8.8.202";// FTP服务器地址public final static String USERNAME = "admin";// 登录FTP服务器账号public final static String PASSWORD = "123";// 登陆FTP服务器密码public final static String UPLOADDIR = "/admin/upload";// 上传文件目录public final static String DOWNLOADDIR = "/admin/download";// 下载文件目录public final static String ENCODING = "UTF-8";// 文件编码方式public final static int FILETYPE = FTPClient.BINARY_FILE_TYPE;// 文件类型(二进制)public final static int BUFFERSIZE = 1024;// 缓冲区大小/** * 上传文件到FTP服务器 * @return */public static boolean doUpload() {FTPClient ftpClient = new FTPClient();FileInputStream fis = null;boolean result = true;try {ftpClient.connect(URL);//ftpClient.connect(host, port);有端口号的连接ftpClient.login(USERNAME, PASSWORD);File srcFile = new File("F:/myStudy/svn-eclipse-site-1.6.10.rar");// 本地即将上传的文件fis = new FileInputStream(srcFile);ftpClient.changeWorkingDirectory(UPLOADDIR);ftpClient.setBufferSize(BUFFERSIZE);ftpClient.setControlEncoding(ENCODING);ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.storeFile("001.rar", fis);} catch (IOException e) {result = false;e.printStackTrace();} finally {// 关闭连接IOUtils.closeQuietly(fis);try {ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();}}return result;}/** * 从FTP服务器中下载文件 * @return */public static boolean doDownload() {FTPClient ftpClient = new FTPClient();FileOutputStream fos = null;boolean result = true;try {ftpClient.connect(URL);//ftpClient.connect(host, port);有端口号的连接ftpClient.login(USERNAME, PASSWORD);String remoteFileName = "/admin/upload/001.rar";// FTP服务器要被下载的文件fos = new FileOutputStream("F:/myStudy/ftp/002.rar");// 下载后在本地生成的文件ftpClient.setBufferSize(BUFFERSIZE);ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.retrieveFile(remoteFileName, fos);} catch (IOException e) {result = false;e.printStackTrace();} finally {// 关闭连接IOUtils.closeQuietly(fos);try {ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();}}return result;}public static void main(String[] args) {boolean result = doUpload();int count = 0;while(!result && 3 > count) {// 如果失败,则最多再尝试3次count ++;result = doUpload();}}}
package com.whty.ftp;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import java.util.Properties;import org.apache.commons.io.IOUtils;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;/** * 使用FTP协议向服务器上传、下载文件 * @author 丑哥最风骚 * @date 2014-04-02 */public class FtpUtil {private static Properties ftpProperties = null;static{InputStream is = FtpUtil.class.getResourceAsStream("/properties/ftp.properties");ftpProperties = new Properties();try {ftpProperties.load(is);} catch (IOException e1) {e1.printStackTrace();}}public static String URL = ftpProperties.getProperty("URL");// FTP服务器地址public static int PORT = Integer.parseInt(ftpProperties.getProperty("PORT"));// FTP服务器端口号public static String USERNAME = ftpProperties.getProperty("USERNAME");// 登录FTP服务器账号public static String PASSWORD = ftpProperties.getProperty("PASSWORD");// 登陆FTP服务器密码public static String UPLOADDIR = ftpProperties.getProperty("UPLOADDIR");// 上传文件目录public static String DOWNLOADDIR = ftpProperties.getProperty("DOWNLOADDIR");// 下载文件目录public static String ENCODING = "UTF-8";// 文件编码方式public static int FILETYPE = FTPClient.BINARY_FILE_TYPE;// 文件类型(二进制)public static int BUFFERSIZE = 1024;// 缓冲区大小/** * 获取自身服务器存放与FTP相关文件的路径 * @return */public static String getLocalFtpDirPath() {String dir = Thread.currentThread().getContextClassLoader().getResource("").getPath();String ftpDir = dir.split("WEB-INF")[0] + "ftp/";ftpDir.replace("/", File.separator);File file = new File(ftpDir);if(!file.exists()) {file.mkdirs();}return ftpDir;}/** * 从FTP服务器中拷贝文件到本地 * @return */public static boolean doDownload() {FTPClient ftpClient = new FTPClient();FileOutputStream fos = null;boolean result = true;try {// 登录FTP服务器ftpClient.connect(URL);//ftpClient.connect(host, port);ftpClient.login(USERNAME, PASSWORD);// 把FTP服务器指定目录下符合条件的文件筛选出来List<String> fileNameList = new ArrayList<String>();String fileName = "";if(DOWNLOADDIR.startsWith("/") && DOWNLOADDIR.endsWith("/")){ftpClient.changeWorkingDirectory(DOWNLOADDIR);FTPFile[] files = ftpClient.listFiles();for(FTPFile file : files) {if(file.isFile()) {fileName = file.getName();System.out.println("fileName = " + fileName);String createDateStr = (fileName.split("_")[1]).split("\\.")[0];if(checkCreateTime(createDateStr)) {fileNameList.add(fileName);}}}}// 把符合条件的文件下载到本地String remoteFileName = "";// FTP服务器要被下载的文件(路径加文件名)String localFileName = "";// 下载后在本地生成的文件(路径加文件名)for(int i=0; i<fileNameList.size(); i++) {fileName = fileNameList.get(i);remoteFileName = DOWNLOADDIR + fileName;localFileName = getLocalFtpDirPath() + fileName;fos = new FileOutputStream(localFileName);ftpClient.setBufferSize(BUFFERSIZE);ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.retrieveFile(remoteFileName, fos);}} catch (Exception e) {result = false;e.printStackTrace();} finally {// 关闭连接IOUtils.closeQuietly(fos);try {ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();}}return result;}/** * 给一个时间,判断是否为今天 * @param createDateStr * @return */public static boolean checkCreateTime(String createDateStr) {boolean result = true;try {SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");long createTime = sdf.parse(createDateStr).getTime();Calendar cal = Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);long time1 = cal.getTimeInMillis();cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);long time2 = cal.getTimeInMillis();if(time1 < createTime && time2 > createTime) {result = true;} else {result = false;}} catch(Exception e) {e.printStackTrace();result = false;}return result;}}
0 0
- FTP上传和下载文件
- FTP上传和下载文件
- ftp文件上传和下载
- ftp文件上传和下载
- shell实现ftp上传和下载文件
- FTP方式的文件上传和下载
- java Ftp文件上传和下载
- ftp实现文件上传和下载
- Python:FTP上传和下载文件编程
- linux ftp批量上传和下载文件
- FTP上传和下载文件--C++实现
- linux ftp批量上传和下载文件
- linux ftp批量上传和下载文件
- Linux 下ftp上传和下载文件
- ftp实现文件的上传和下载
- Java连接FTP上传和下载文件
- ftp文件下载、上传
- ftp上传 下载文件
- 简述WebS简述WebService与.NET Remoting的区别及适应场合
- 编程学习好去处:35 个快速学习的编程网站
- apache的ab性能测试工具
- JS控制文本框:输入银行卡号,4位自动加上空格分隔
- 为了保证存储服务器smb运行正常,需要注意以下几点:
- FTP上传和下载文件
- 青春纪念册
- ORA-481 DRM同步超时导致lmon将实例中止
- 符合规范进
- 人托人
- 亲,消防喊你来点“料”
- 高特温特容颜
- TextView中使用一个字符串替换字符串str中start到end的子字符串(终极版)
- stringbuffer与stringbuilder的