package com.zte.xh.fund.util; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.SocketException; import java.nio.channels.FileChannel; import java.util.Properties; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import com.jfinal.kit.PropKit; import com.mysql.jdbc.StringUtils; /** * 用来对文件操作的一些方法 * * @author Jay_Lee * */ public class FileUtil { // ftp的propertis信息 private static Properties properties = PropKit.use( "config/ftpclient.properties", "utf-8").getProperties(); // ftp上传的信息 private static final String IP = properties.getProperty("ip"); // 服务器IP地址 private static final String USER_NAME = properties.getProperty("userName"); // 用户名 private static final String PWD = properties.getProperty("pwd"); // 密码 private static final int PORT = Integer.valueOf(properties .getProperty("port")); // 端口号 public static final String DOWN_PATH = properties.getProperty("filepath"); public static FTPClient ftpClient = null; // copy图片文件 public static void copyFile(File sourceFile, File toFile) { FileInputStream fi = null; FileOutputStream fo = null; FileChannel in = null; FileChannel out = null; try { fi = new FileInputStream(sourceFile); fo = new FileOutputStream(toFile); // 得到对应的文件通道 in = fi.getChannel(); // 得到对应的文件通道 out = fo.getChannel(); // 连接两个通道,并且从in通道读取,然后写入out通道 in.transferTo(0, in.size(), out); } catch (IOException e) { e.printStackTrace(); } finally { try { fi.close(); in.close(); fo.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } } } // ftp上传文件到服务器 public static String uploadToFtp(String ftpPath, String filePath, String fileName) throws SocketException, IOException { String returnMessage = "0"; try { ftpConne(); int returnCode = ftpClient.getReplyCode(); FileInputStream fis = null; if (FTPReply.isPositiveCompletion(returnCode)) { ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // 登陆成功设置上传目录 File f = new File(filePath); createPath(ftpPath); ftpClient.changeWorkingDirectory(ftpPath); fis = new FileInputStream(f); ftpClient.storeFile(fileName, fis); returnMessage = "1"; System.out.println(returnMessage + "ok"); } else { returnMessage = "0"; } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("FTP客户端出错!", e); } finally { // 关闭链接 if (ftpClient.isConnected()) { ftpClient.logout(); ftpClient.disconnect(); } } return returnMessage; } // ftp判断是否存在目录,不存在则创建 public static void createPath(String paths) { try { // 解析path的地址是否包含子路劲 String[] ps = paths.split("/"); String rp = ""; boolean isexist = false; for (String path : ps) { if (StringUtils.isNullOrEmpty(path)) { continue; } rp += "/" + path; isexist = ftpClient.changeWorkingDirectory(rp); if (!isexist) { ftpClient.makeDirectory(path); ftpClient.changeWorkingDirectory(rp); } } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("创建文件夹出错!", e); } } /** * 从ftp下载文件 * * @param localFileName * 本地文件名 * @param remoteFileName * 远程文件名 */ public static String downFromFtp(String localPath, String remotePath, String fileName) { BufferedOutputStream buffOut = null; String result = ""; try { ftpConne(); buffOut = new BufferedOutputStream(new FileOutputStream(localPath)); boolean isExist = ftpClient.changeWorkingDirectory(remotePath); if (!isExist) { result = "3"; System.out.println("路径不存在"); } ftpClient.setFileType(FTP.BINARY_FILE_TYPE); ftpClient.retrieveFile(fileName, buffOut); result = "1"; } catch (Exception e) { e.printStackTrace(); } finally { try { if (buffOut != null) buffOut.close(); } catch (Exception e) { e.printStackTrace(); } } return result; } // ftp的链接 public static void ftpConne() { try { ftpClient = new FTPClient(); ftpClient.setBufferSize(1024 * 1024 * 2); ftpClient.setControlEncoding("UTF-8"); ftpClient.enterLocalPassiveMode(); ftpClient.connect(IP, PORT); ftpClient.login(USER_NAME, PWD); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("FTP链接出错!", e); } } // 测试demo public static void main(String[] args) { FileUtil.ftpConne(); /* * try { FileUtil.uploadToFtp(PATH, "f:" + File.separator + * "checkAccount.xls", "checkAccount.xls"); } catch (IOException e) { // * TODO Auto-generated catch block e.printStackTrace(); } */ FileUtil.downFromFtp("f:" + File.separator + "xxxx.xls", DOWN_PATH,"checkAccount.xls"); } }
ftp上传下载文件到服务器
今天公司写了ftp代码上传下载 用的apache提供的common-net包
猜你喜欢
转载自lijie-insist.iteye.com/blog/2240354
今日推荐
周排行