FTP上传下载工具类

来源:互联网 发布:电脑设计软件 编辑:程序博客网 时间:2024/05/13 18:53
import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.SocketException;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @khj * @title FtpUtils * @Description : FTP 上传下载工具类 * @time */public class FTPUtils{    /**     * 日志     */    private static Logger logger = LoggerFactory.getLogger(FTPUtils.class);        private static FTPClient ftp;        /**     * 连接ftp <一句话功能简述> <功能详细描述>     *      * @param addr     * @param port     * @param username     * @param password     * @return     * @see [类、类#方法、类#成员]     */    public static boolean connect(String addr, int port, String username, String password)    {        ftp = new FTPClient();                try        {            ftp.connect(addr, 21);            ftp.login(username, password);                    }        catch (SocketException e)        {            e.printStackTrace();        }        catch (IOException e)        {            e.printStackTrace();        }        return ftp.isConnected();    }        @SuppressWarnings("unused")    private void upload(File file, String path)    {        logger.info(" file.isDirectory() : {}" + file.isDirectory());                try        {            if (file.isDirectory())            {                ftp.makeDirectory(file.getName());                ftp.changeWorkingDirectory(file.getName());                String[] files = file.list();                for (int i = 0; i < files.length; i++)                {                    File file1 = new File(file.getPath() + "\\" + files[i]);                    if (file1.isDirectory())                    {                        upload(file1, path);                        ftp.changeToParentDirectory();                    }                    else                    {                        File file2 = new File(file.getPath() + "\\" + files[i]);                        FileInputStream input = new FileInputStream(file2);                        ftp.storeFile(file2.getName(), input);                        input.close();                    }                }            }            else            {                File file2 = new File(file.getPath());                                System.out.println(" file.getPath() : " + file.getPath() + " | file2.getName() : " + file2.getName());                                InputStream input = new FileInputStream(file2);                                ftp.changeWorkingDirectory(path);                ftp.storeFile(file2.getName(), input);                                input.close(); // 关闭输入流                ftp.logout(); // 退出连接            }        }        catch (Exception e)        {            logger.error(e.getMessage());        }    }        @SuppressWarnings("static-access")    public static byte[] downloadFile(String fileName)    {        byte[] bytes = null;        try        {            ftp.changeWorkingDirectory("");                        // 列出该目录下所有文件            FTPFile[] fs = ftp.listFiles(fileName);                        // 遍历所有文件,找到指定的文件            for (FTPFile file : fs)            {                if (file.getName().equals(fileName))                {                    // 根据绝对路径初始化文件                    // File localFile = new File(localPath);                    // if (!localFile.exists())                    // {                    // localFile.createNewFile();                    // }                    // // 输出流                    // OutputStream os = new FileOutputStream(localFile);                    InputStream in = null;                    // 下载文件                    ftp.setBufferSize(1024);                    ftp.setControlEncoding("UTF-8");                    ftp.setFileType(ftp.BINARY_FILE_TYPE);                    // 下载文件到 localFile                    // ftp.retrieveFile(ff.getName(), os);                                        String remoteAbsoluteFile = file.getName();                    remoteAbsoluteFile = new String(remoteAbsoluteFile.getBytes("UTF-8"), "ISO-8859-1");                    in = ftp.retrieveFileStream(remoteAbsoluteFile);                                        bytes = input2byte(in);                                    System.out.println("下载成功!" + bytes.length);                                        in.close();                }            }                        ftp.logout(); // 退出连接        }        catch (Exception e)        {            e.printStackTrace();        }        return bytes;    }        /**     * byte[] 转 file      *      * @param bytes     * @param path     * @return     * @see [类、类#方法、类#成员]     */    public static void byteToFile(byte[] bytes, String path)    {        try        {            // 根据绝对路径初始化文件            File localFile = new File(path);            if (!localFile.exists())            {                localFile.createNewFile();            }            // 输出流            OutputStream os = new FileOutputStream(localFile);                        os.write(bytes);                        os.close();        }        catch (Exception e)        {            e.printStackTrace();        }    }        /**     * 文件转成 byte[] <一句话功能简述> <功能详细描述>     *      * @param inStream     * @return     * @throws IOException     * @see [类、类#方法、类#成员]     */    public static byte[] input2byte(InputStream inStream)        throws IOException    {        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();        byte[] buff = new byte[100];        int rc = 0;        while ((rc = inStream.read(buff, 0, 100)) > 0)        {            swapStream.write(buff, 0, rc);        }        byte[] in2b = swapStream.toByteArray();                swapStream.close();                return in2b;    }        public static void getPhoto(String filePath,String localPath)    {        FTPUtils.connect(ReadPropertiesUtils.getParamValue("ftp.host"),            21,            ReadPropertiesUtils.getParamValue("ftp.username"),            ReadPropertiesUtils.getParamValue("ftp.password"));        logger.info("");        byte[] bytes = FTPUtils.downloadFile(filePath);                FTPUtils.byteToFile(bytes, localPath);    }        public static byte[] getPhoto(String filePath)    {        FTPUtils.connect(ReadPropertiesUtils.getParamValue("ftp.host"),            21,            ReadPropertiesUtils.getParamValue("ftp.username"),            ReadPropertiesUtils.getParamValue("ftp.password"));        logger.info("");        byte[] bytes = FTPUtils.downloadFile(filePath);                //FTPUtils.byteToFile(bytes, localPath);        return bytes;    }        public static void main(String[] args)        throws Exception    {                String filePath = "T_ZDRY_IDX_JXXX_INC/010020090902731604.jpg";                String localPath = "d:\\ccc.jpg";                FTPUtils.getPhoto(filePath, localPath);    }}

原创粉丝点击