• FTP


    public class FtpUtil {

    private static FTPClient ftpClient = new FTPClient();

    private static String encoding = System.getProperty("file.encoding");

    private static String defaultPath;

    /**

    * FTP初始化连接

    */

    public static boolean connect(String host,Integer port,String userName,String password) throws IOException{

    return connect(host,port,userName,password,null);

    }

    /**

    * FTP初始化连接

    */

    public static boolean connect(String host,Integer port,String userName,String password,String remotePath) throws IOException{

    boolean result=false;

    try {

    ftpClient.connect(host,port);

    // 登录

    ftpClient.login(userName, password);

    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

    // 检验是否连接成功

    int reply = ftpClient.getReplyCode();

    if (!FTPReply.isPositiveCompletion(reply)) {//连接失败

    ftpClient.disconnect();

    result =false;

    }else{//如果连接成功

    result = true;

    if(remotePath != null){

    defaultPath = remotePath;

    result =ftpClient.changeWorkingDirectory(new String(remotePath.getBytes(encoding),"iso-8859-1"));

    if(result == false){

    System.err.println("ftp changeWorkingDirectory to ".concat(remotePath).concat(" error"));

    }

    }

    System.out.println("ftp connect successfully.");

    }

    } catch (SocketException e) {

    System.err.println("ftp connect failed: " + e.getMessage());

    throw e;

    } catch (IOException e) {

    System.err.println("ftp connect failed: " + e.getMessage());

    throw e;

    }

    return result;

    }

    /**

    * FTP是否连接

    */

    public static boolean isConnected(){

    return ftpClient.isConnected();

    }

    /**

    * 上传文件

    */

    public static boolean uploadFile(String filename, InputStream input) throws IOException {

    return uploadFile(null,filename,input);

    }

    /**

    * 上传文件

    */

    public static boolean uploadFile(String remotePath, String filename, InputStream input) throws IOException {

    boolean result = false;

    if (!ftpClient.isConnected()) {

    System.err.println("ftp uploadfile error : no ftpserver is connected");

    return false;

    }

    try {

    // 转移工作目录至指定目录下

    if(remotePath != null){

    ftpClient.changeWorkingDirectory(new String(remotePath.getBytes(encoding),"iso-8859-1")); 

    }

    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

    result = ftpClient.storeFile(new String(filename.getBytes(encoding),"iso-8859-1"), input);

    } catch (IOException e) {

    System.err.println("ftp uploadfile error : "+e.getMessage());

    throw e;

    } finally {

    try {

    if (input != null) {

    input.close();

    }

    } catch (IOException e) {

    System.err.println("ftp uploadfile close error : "+e.getMessage());

    throw e;

    }

    }

    System.out.println("ftp uploadfile successfully.");

    return result;

    }

    /**

    * 下载FTP文件

    */

    public static boolean downFile(String fileName, String localPath) throws IOException {

    return downFile(null,fileName,localPath);

    }

    /**

    * 下载FTP文件

    */

    public static boolean downFile( String remotePath, String fileName, String localPath) throws IOException {

    boolean result = false;

    if (!ftpClient.isConnected()) {

    System.err.println("ftp download file error : no ftpserver is connected");

    return false;

    }

    try {

    // 转移工作目录至指定目录下

    if(remotePath != null){

    ftpClient.changeWorkingDirectory(new String(remotePath.getBytes(encoding),"iso-8859-1"));        

    }

    System.out.println("ftp start download file :" + fileName);

    // 获取文件列表

    FTPFile[] fs = ftpClient.listFiles();

    for (FTPFile ff : fs) {

    if(fileName != null && !fileName.equals(ff.getName())){

    continue;

    }

    File localFile = new File(localPath + "/" + ff.getName());

    OutputStream os = new FileOutputStream(localFile);

    ftpClient.retrieveFile(ff.getName(), os);

    os.close();

    System.out.println("ftp download file finished :"+ff.getName());

    result = true;

    }

    if(result == false){

    System.err.println("ftp download error cannot find file : " + fileName);

    }

    } catch (IOException e) {

    System.err.println("ftp download error : "+e.getMessage());

    throw e;

    return result;

    }

    /**

    * 关闭当前连接

    */

    public static void close(){

    try {

    ftpClient.logout();

    ftpClient.disconnect();

    } catch (IOException e) {

    System.err.println("ftp ftpserver close error : "+e.getMessage());

    }

    }

    /**

    * 返回连接默认路径

    */

    public static void cdRoot() throws Exception{

    try {

    if (!ftpClient.isConnected()) {

    System.err.println("ftp cd root error : no ftpserver is connected");

    }

    ftpClient.changeWorkingDirectory(new String("/".getBytes(encoding),"iso-8859-1"));

    if(defaultPath != null){

    ftpClient.changeWorkingDirectory(new String(defaultPath.getBytes(encoding),"iso-8859-1"));   

    }

    } catch (Exception e) {

    System.err.println("ftp change directory to defaultpath error : "+e.getMessage());

    throw e;

    }

    }

    /**

    * 工作路径切换

    */

    public static void cd(String path) throws Exception{

    try {

    if (!ftpClient.isConnected()) {

    System.err.println(" ftp cd " + path + " : no ftpserver is connected");

    }

    ftpClient.changeWorkingDirectory(new String(path.getBytes(encoding),"iso-8859-1"));

    } catch (Exception e) {

    System.err.println("ftp cd '" + path + "' error : "+e.getMessage());

    throw e;

    }

    }

    /**

    * 创建工作路径

    */

    public static void mkdir(String path) throws IOException{

    try {

    if (!ftpClient.isConnected()) {

    System.err.println("ftp mkdir error : no ftpserver is connected");

    }

    ftpClient.makeDirectory(path);

    } catch (IOException e) {

    System.err.println("ftp mkdir '" + path + "' error : "+e.getMessage());

    throw e;

    }

    }

    /**

    * 查找文件是否存在

    */

    public static FTPFile findFile(String filename) throws IOException{

    return findFile(null,filename);

    }

    /**

    * 查找文件是否存在

    */

    public static FTPFile findFile(String remotePath, String filename) throws IOException{

    try {

    if (!ftpClient.isConnected()) {

    System.err.println("ftp findfile error : no ftpserver is connected");

    return null;

    }

    FTPFile[] fs = ftpClient.mlistDir(remotePath);

    for (FTPFile ff : fs) {

    if(filename != null && !filename.equals(ff.getName())){

    continue;

    }

    return ff;

    }

    } catch (IOException e) {

    System.err.println("ftp find file '" + filename + "' error : "+e.getMessage());

    throw e;

    }

    return null;

    }

    }

  • 相关阅读:
    成为 Linux 内核高手的四个方法
    专访CEO何朝曦:深信服高速成长的秘诀
    世界上最让人痛苦的是无所事事(年纪轻轻当项目经理、研发总监真的不好)
    2015 8月之后"云计算"学习计划
    程辉:创造云计算的第四种商业模式(送源码的托管云)
    配置restful webservice 框架restkit
    跟我一起玩转Sencha Touch 移动 WebApp 开发1
    数据更新最佳实践
    addEventListener和attachEvent以及element.onclick的区别
    java线程池:ThreadPoolExecutor
  • 原文地址:https://www.cnblogs.com/xyzq/p/6816270.html
Copyright © 2020-2023  润新知