前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java代码的几个utils,基本可以直接用

java代码的几个utils,基本可以直接用

作者头像
JQ实验室
发布2022-02-10 14:01:45
5780
发布2022-02-10 14:01:45
举报
文章被收录于专栏:实用技术
代码语言:javascript
复制
public class MD5Util {

    // 字符串的MD5
    public static String string2MD5(String psw) {
        {
            try {
                MessageDigest md5 = MessageDigest.getInstance("MD5");
                md5.update(psw.getBytes("UTF-8"));
                byte[] encryption = md5.digest();
                StringBuffer strBuf = new StringBuffer();
                for (int i = 0; i < encryption.length; i++) {
                    if (Integer.toHexString(0xff & encryption[i]).length() == 1) {
                        strBuf.append("0").append(Integer.toHexString(0xff & encryption[i]));
                    } else {
                        strBuf.append(Integer.toHexString(0xff & encryption[i]));
                    }
                }
                return strBuf.toString();
            } catch (NoSuchAlgorithmException e) {
                return "";
            } catch (UnsupportedEncodingException e) {
                return "";
            }
        }
    }

}
代码语言:javascript
复制
public class DateUtils {

    public static String local2utc(String localTime) {
        //String localTime = "2018-05-23 16:05:52";
        String utcTimePatten = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
        String localTimePatten = "yyyy-MM-dd HH:mm:ss";

        SimpleDateFormat localFormat = new SimpleDateFormat(localTimePatten);
        localFormat.setTimeZone(TimeZone.getDefault()); // 设置本地时区 自动计算出本地时间
        try {
            Date gpsUTCDate = localFormat.parse(localTime);
            SimpleDateFormat utcFormat = new SimpleDateFormat(utcTimePatten);
            utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));// 时区定义并进行时间获取
            String utcTime = utcFormat.format(gpsUTCDate.getTime());

            //System.out.println(localTime);
            //System.out.println(utcTime);

            return utcTime;
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * UTC时间转本地时间格式
     * 
     * @param utcTime         UTC时间
     * @param utcTimePatten   UTC时间格式
     * @param localTimePatten 本地时间格式
     * @return 本地时间格式的时间
     */
    public static String utc2Local(String utcTime) {
        //String utcTime = "2018-05-23T16:05:52.123Z";
        String utcTimePatten = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
        String localTimePatten = "yyyy-MM-dd HH:mm:ss";
        System.out.println(utcTime);

        SimpleDateFormat utcFormat = new SimpleDateFormat(utcTimePatten);
        utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));// 时区定义并进行时间获取
        try {
            Date gpsUTCDate = utcFormat.parse(utcTime);

            SimpleDateFormat localFormat = new SimpleDateFormat(localTimePatten);
            localFormat.setTimeZone(TimeZone.getDefault()); // 设置本地时区 自动计算出本地时间
            String localTime = localFormat.format(gpsUTCDate.getTime());
            //System.out.println(localTime);
            return localTime;
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return "";
    }

    public static String local2utc(Date date) {
        String localTimePatten = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat localFormat = new SimpleDateFormat(localTimePatten);
        String local = localFormat.format(new Date());
        return local2utc(local);
    }

}
代码语言:javascript
复制
public class StringUtils {

    public static String truncStr(String str, int length) {
        if (hasLength(str)) {
            if (str.length() > length) {
                str = str.substring(0, length);
            }
        }
        return str;
    }

    public static boolean hasLength(String str) {
        return (str != null && str.length() > 0);
    }

    public static Long toLong(String strValue) {
        long lng = (strValue == null ? 0 : Long.parseLong(strValue));
        return (new Long(lng));
    }

    public static Integer toInteger(String strValue) {
        int lng = (strValue == null ? 0 : Integer.parseInt(strValue));
        return (new Integer(lng));
    }

    public static Byte toByte(String strValue) {
        byte bt = (strValue == null ? 0 : Byte.parseByte(strValue));
        return (new Byte(bt));
    }

    public static Boolean toBoolean(String strValue) {
        return new Boolean(toBool(strValue));
    }

    public static boolean toBool(String strValue) {
        if (strValue == null) {
            return false;
        } else if (strValue.length() > 0) {
            strValue = strValue.toUpperCase();
            char b = strValue.charAt(0);
            switch (b) {
            case 'T':
            case '1':
            case '是':
                return true;
            case 'F':
            case '0':
            case '否':
                return false;
            default:
                return false;
            }
        } else {
            return false;
        }
    }

    public static java.sql.Timestamp toSQLTimestamp(String value) {
        return (new java.sql.Timestamp(toDate(value).getTime()));
    }

    public static java.util.Date toDate(String strValue) {
        SimpleDateFormat fmt = null;

        if (strValue.indexOf('.') > 0) {
            fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.CHINA);// 2005-01-01
            // 10:10:10.100
        } else if (strValue.indexOf(':') > 0) {
            fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);// 2005-01-01
            // 10:10:10.100
        } else if (strValue.indexOf('-') > 0) {
            fmt = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);// 2005-01-01
            // 10:10:10.100
        }

        try {
            return fmt.parse(strValue);
        } catch (ParseException ex) {
            return new Date(0);// 返回1970-01-01 00:00:00
        }
    }

    /**
     * 使用2005-01-01 10:10:10.456格式返回Date
     * 
     * @param date
     *            Date
     * @return String
     */
    public static String toString(java.util.Date date) {
        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);// 2005-01-01
        // 10:10:10.100
        return fmt.format(date);
    }

    public static String toString(java.util.Date date, boolean bolWithMS) {
        SimpleDateFormat fmt;
        if (bolWithMS) {
            fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.CHINA); // 2005-01-01
            // 10:10:10.100
        } else {
            fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);// 2005-01-01
            // 10:10:10.100
        }
        return fmt.format(date);
    }

    /**
     * 采用1、0表示boolean
     * 
     * @param b
     *            boolean
     * @return String
     */
    public static String toString(boolean b) {
        return (b ? "1" : "0");
    }

    /**
     * 如果locale是CHINA用“是”、“否”表示boolean 如果locale是null用“1”、“0”表示boolean
     * 其他情况下用“true”、“false”表示boolean
     * 
     * @param b
     *            boolean
     * @param locale
     *            Locale
     * @return String
     */
    public static String toString(boolean b, Locale locale) {
        if (locale == Locale.CHINA) {
            return (b ? "是" : "否");
        } else if (locale == null) {
            return (b ? "1" : "0");
        } else {// 不管了

            return (b ? "true" : "false");
        }
    }

    /**
     * 把ip转换为长整型
     * 
     * @param ip
     *            String
     * @return long
     */
    public static long ParseIp2Long(String ip) {
        Long num = 0L;
        if (ip == null) {
            return num;
        }

        try {
            ip = ip.replaceAll("[^0-9\\.]", ""); // 去除字符串前的空字符
            String[] ips = ip.split("\\.");
            if (ips.length == 4) {
                num = Long.parseLong(ips[0], 10) * 256L * 256L * 256L + Long.parseLong(ips[1], 10) * 256L * 256L
                        + Long.parseLong(ips[2], 10) * 256L + Long.parseLong(ips[3], 10);
                num = num >>> 0;
            }
        } catch (NullPointerException ex) {
            return 0L;
        }

        return num;
    }
    
}
代码语言:javascript
复制
public final class AESUtils {
  //mode用aes的话,默认aes/ECB/NoPadding/128
  public static final String AES = "AES";
  private Cipher encryptCipher;
  private Cipher decryptCipher;
  private SecretKeySpec secretKey;
  private String mode;

  private AESUtils(SecretKeySpec secretKey, String mode) {
    this.secretKey = secretKey;
    this.mode = mode;
  }



  public static AESUtils aesECBNoPadding128(String seed) {
    return new AESUtils(new SecretKeySpec(seed.getBytes(), AES), AES);
  }


  public String encrypt(String v) throws Exception {
    if (encryptCipher == null) {
      encryptCipher = Cipher.getInstance(mode); // 算法是AES
      encryptCipher.init(Cipher.ENCRYPT_MODE, secretKey);
    }
    return Base64Utils.encodeToString(encryptCipher.doFinal(v.getBytes(StandardCharsets.UTF_8)));
  }

  public String decrypt(String v) throws Exception {
    if (decryptCipher == null) {
      decryptCipher = Cipher.getInstance(mode); // 算法是AES
      decryptCipher.init(Cipher.DECRYPT_MODE, secretKey);
    }
    byte[] clearTextBytes = decryptCipher.doFinal(Base64Utils.decodeFromString(v));
    return new String(clearTextBytes, StandardCharsets.UTF_8);
  }
}
代码语言:javascript
复制
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.imageio.ImageIO;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

public class FFMpegUtils {

    private final static Logger logger = LoggerFactory
            .getLogger(FFMpegUtils.class);

    public static boolean isSurpportedType(String type) {
        Pattern pattern = Pattern.compile(
                "(asx|asf|mpg|wmv|3gp|mp4|mov|avi|flv|ts|jpg|png|bmp){1}$",
                Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(type);
        return matcher.find();
    }

    private static boolean resizeImage(String srcImagePath, String toImagePath,
            int width, int height) throws IOException {
        try {
            // 读入文件
            File file = new File(srcImagePath);
            // 构造Image对象
            BufferedImage src = ImageIO.read(file);
            // 放大边长
            BufferedImage tag = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            // 绘制放大后的图片
            tag.getGraphics().drawImage(src, 0, 0, width, height, null);

            ImageIO.write(tag, "jpg", new File(toImagePath));
            return new File(toImagePath).exists();
        } catch (Throwable e) {
            logger.warn("ImageIO不能处理文件{}" + srcImagePath, e);
            return false;
        }
    }

    public static boolean captureThumbnail(String ffmpegPath,
            String sourceFile, String destination, String aspectratio,
            String position, boolean isSynchronized) throws IOException,
            InterruptedException {
        String lowerCase = sourceFile.toLowerCase();
        if (lowerCase.endsWith(".jpg") || lowerCase.endsWith(".jpeg")
                || lowerCase.endsWith(".png") || lowerCase.endsWith(".bmp")
                || lowerCase.endsWith(".gif")) {
            String[] sizes = aspectratio.split("\\*");
            if (resizeImage(sourceFile, destination,
                    Integer.parseInt(sizes[0]), Integer.parseInt(sizes[1]))) {
                return true;
            }
        }

        boolean result = true;
        // http协议会返回 !exists
        // File video = new File(sourceFile);
        // if (!video.exists() || video.length() == 0) {
        // throw new IOException("file does not exists or leng is 0!");
        // }

        List<String> cmd = new LinkedList<String>();
        cmd.add(ffmpegPath);
        cmd.add("-y");
        if (StringUtils.hasLength(position)) {
            cmd.add("-ss");
            cmd.add(position);
        }
        cmd.add("-i");
        cmd.add(sourceFile);
        cmd.add("-s");
        cmd.add(aspectratio);
        cmd.add("-t");
        cmd.add("0.001");
        cmd.add("-f");
        cmd.add("image2");

        cmd.add(destination.replaceAll("%", "%%"));

        ProcessBuilder pb = new ProcessBuilder();
        pb.redirectErrorStream(true);
        pb.command(cmd);
        long start = System.currentTimeMillis();
        File file = new File(destination);
        file.getParentFile().mkdirs();
        pb.start();
        while (isSynchronized) {
            if (System.currentTimeMillis() - start > 10 * 1000) {
                result = false;
                break;
            }
            Thread.sleep(100);

            file = new File(destination);
            if (file.exists()) {
                break;
            }
        }
        return result;
    }

    public static boolean captureThumbnail(String ffmpegPath,
            String sourceFile, String destination, String aspectratio,
            boolean isSynchronized) throws IOException, InterruptedException {
        return captureThumbnail(ffmpegPath, sourceFile, destination,
                aspectratio, null, isSynchronized);
    }
}
代码语言:javascript
复制
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;

import javax.xml.bind.JAXB;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

public class FtpUtils {
    Logger logger = LoggerFactory.getLogger(getClass());
    private interface __ObjectConverter {
        void objectToStream(Object object, OutputStream stream) throws IOException;
    }

    private static class __JAXBConverter implements __ObjectConverter {
        private static __ObjectConverter converter = null;

        @Override
        public void objectToStream(Object object, OutputStream stream) {
            JAXB.marshal(object, stream);
        }

        public static __ObjectConverter getInstance() {
            return converter == null ? new __JAXBConverter() : converter;
        }
    }

    private static class __JsonConverter implements __ObjectConverter {
        private static __ObjectConverter converter = null;

        @Override
        public void objectToStream(Object object, OutputStream stream) throws IOException {
            String json = JsonObjUtil.ObjToJson(object);
            try (OutputStreamWriter writer = new OutputStreamWriter(stream, StandardCharsets.UTF_8)) {
                writer.write(json);
                writer.flush();
            }
        }

        public static __ObjectConverter getInstance() {
            return converter == null ? new __JsonConverter() : converter;
        }
    }

    public static class FtpHolder {
        private String host;
        private int port;
        private String user;
        private String password;
        private String relativePath;
        private String fileName;
        private boolean passiveMode = true;
        private String encoding = "UTF-8";
        private FTPClient ftp;

        @Override
        public boolean equals(Object o) {
            if (o instanceof FtpHolder) {
                FtpHolder holder = (FtpHolder) o;
                return host != null && host.equals(holder.getHost()) && port == holder.getPort() && user != null
                        && user.equals(holder.getUser()) && password != null && password.equals(holder.getPassword());
            } else {
                return false;
            }
        }

        public boolean checkConnection() {
            try {
                int np = ftp.noop();
                return np >= 200 && np < 300;
            } catch (Exception e) {
                try {
                    ftp.disconnect();
                } catch (Exception e1) {
                }
                try {
                    if (ftp == null) {
                        ftp = new FTPClient();
                    }
                    ftp.setControlEncoding("UTF-8");
                    ftp.connect(host, port);
                    return ftp.login(user, password);
                } catch (IOException e1) {
                    return false;
                }
            }
        }

        public boolean checkFile() throws IOException {
            if(checkConnection()){
                FTPFile[] ftpFiles = ftp.listFiles(relativePath + fileName);
                return !ObjectUtils.isEmpty(ftpFiles);
            }

            return false;
        }

        /**
         * @return the host
         */
        public String getHost() {
            return host;
        }

        /**
         * @param host
         *            the host to set
         */
        public void setHost(String host) {
            this.host = host;
        }

        /**
         * @return the port
         */
        public int getPort() {
            return port;
        }

        /**
         * @param port
         *            the port to set
         */
        public void setPort(int port) {
            this.port = port;
        }

        /**
         * @return the user
         */
        public String getUser() {
            return user;
        }

        /**
         * @param user
         *            the user to set
         */
        public void setUser(String user) {
            this.user = user;
        }

        /**
         * @return the password
         */
        public String getPassword() {
            return password;
        }

        /**
         * @param password
         *            the password to set
         */
        public void setPassword(String password) {
            this.password = password;
        }

        /**
         * @return the ftp
         */
        public FTPClient getFtp() {
            return ftp;
        }

        /**
         * @param ftp
         *            the ftp to set
         */
        public void setFtp(FTPClient ftp) {
            this.ftp = ftp;
        }

        public boolean makeDirs(String fileName) throws IOException {
            fileName = fileName.replaceAll("^ftp\\:\\/\\/[^\\/]*", "").replaceAll("^\\/", "").replaceAll("[^\\/]*$", "")
                    .replaceAll("\\/$", "");
            return makePathDirs(fileName);
        }

        public boolean makeDirs() throws IOException {
            return makePathDirs(relativePath == null ? "" : relativePath.replaceAll("[\\\\\\/]$", ""));
        }

        public boolean makePathDirs(String path) throws IOException {
            if (path.length() > 0) {
                String[] paths = path.split("\\/");
                ftp.changeWorkingDirectory("/");
                for (String temp : paths) {
                    if (!ftp.changeWorkingDirectory(temp)) {
                        if (!ftp.makeDirectory(temp)) {
                            return false;
                        }
                        if (!ftp.changeWorkingDirectory(temp)) {
                            return false;
                        }
                    }
                }
            }
            return true;
        }

        public String toUrl() {
            StringBuilder sb = new StringBuilder();
            sb.append("ftp://");
            if (StringUtils.hasText(user)) {
                sb.append(user);
                if (StringUtils.hasText(password)) {
                    sb.append(":");
                    sb.append(password);
                }
                sb.append("@");
            }
            sb.append(host);
            if (this.port > 0 && this.port != 21) {
                sb.append(":");
                sb.append(port);
            }
            String relaPath = relativePath.replaceAll("^[\\\\\\/]+|[\\\\\\/]+$", "");
            if (StringUtils.hasText(relaPath)) {
                sb.append("/");
                sb.append(relaPath);
            }
            if (StringUtils.hasText(fileName)) {
                sb.append("/");
                sb.append(fileName.replaceAll("^[\\\\\\/]+|[\\\\\\/]+$", ""));
            }
            return sb.toString();
        }

        public boolean changeDir() throws IOException {
            return changeDir(this.relativePath);
        }

        public boolean changeDir(String relativePath) throws IOException {
            ftp.changeWorkingDirectory("/");
            if (StringUtils.isEmpty(relativePath)) {
                return true;
            }
            relativePath = relativePath.replaceAll("^[\\\\\\/]+|[\\\\\\/]+$", "");
            if (StringUtils.isEmpty(relativePath)) {
                return true;
            }
            for (String path : relativePath.split("[\\\\\\/]")) {
                if (!ftp.changeWorkingDirectory(path)) {
                    return false;
                }
            }
            return true;
        }

        public String getRelativePath() {
            return relativePath;
        }

        public void setRelativePath(String relativePath) {
            this.relativePath = relativePath;
        }

        public String getFileName() {
            return fileName;
        }

        public void setFileName(String fileName) {
            this.fileName = fileName;
        }

        public boolean isPassiveMode() {
            return passiveMode;
        }

        public void setPassiveMode(boolean passiveMode) {
            this.passiveMode = passiveMode;
        }

        public String getEncoding() {
            return encoding;
        }

        public void setEncoding(String encoding) {
            this.encoding = encoding;
        }
    }

    private static List<FtpHolder> holders = new ArrayList<FtpUtils.FtpHolder>();

    public static FtpHolder urlToFtp(String ftpUrl) {
        // 扒出用户名口令
        FtpHolder result = new FtpHolder();
        String user = ftpUrl.replaceAll("(?i)^(ftp\\:\\/\\/)([\\w\\-\\_\\!\\~\\#\\$\\%\\^\\&\\:]*\\@)?(.*)$", "$2").replaceAll("\\@$", "");
        String[] up = user.split("\\:");
        result.setUser(up[0]);
        if (up.length > 1) {
            result.setPassword(up[1]);
        } else {
            result.setPassword("");
        }
        if (StringUtils.isEmpty(user)) {
            // result.setUser("anonymous");
            // result.setPassword("tester@cdv.com");
            result.setUser("cdv");
            result.setPassword("LBIvlrUMMw");
        }

        // 脱去用户、口令信息
        ftpUrl = ftpUrl.replaceAll("(?i)^(ftp\\:\\/\\/)([\\w\\-\\_\\!\\~\\#\\$\\%\\^\\&\\:]*\\@)?(.*)$", "$1$3");
        // 相对路径和文件名分析
        String pathFile = ftpUrl.replaceAll("(?i)^(ftp\\:\\/\\/)[^\\/]+", "");
        result.setRelativePath(pathFile.replaceAll("[^\\\\\\/]+$", ""));
        result.setFileName(pathFile.replaceAll("^.*[\\\\\\/]", ""));

        // 扒出ip和端口
        ftpUrl = ftpUrl.replaceAll("ftp\\:\\/\\/([^\\/]+)(\\/.*)?", "$1");
        String[] hp = ftpUrl.split("\\:");
        result.setHost(hp[0]);
        try {
            result.setPort(Integer.parseInt(hp[1]));
        } catch (Throwable t) {
            result.setPort(21);
        }
        return result;
    }

    public static FtpHolder getFtpClient(String fileName) {
        FtpHolder result = FtpUtils.urlToFtp(fileName);
        for (FtpHolder holder : holders) {
            if (result.equals(holder)) {
                return holder;
            }
        }
        return result;
    }

    public static void jaxbObject2Ftp(Object jaxbObj, String fileName, boolean passiveMode) throws IOException {
        saveObject2Ftp(jaxbObj, fileName, passiveMode, __JAXBConverter.getInstance());
    }

    public static void jsonObject2Ftp(Object jsonObj, String fileName, boolean passiveMode) throws IOException {
        saveObject2Ftp(jsonObj, fileName, passiveMode, __JsonConverter.getInstance());
    }

    private static void saveObject2Ftp(Object object, String fileName, boolean passiveMode, __ObjectConverter converter)
            throws IOException {
        FtpHolder ftp = FtpUtils.getFtpClient(fileName);
        if (ftp.checkConnection()) {
            if (passiveMode) {
                ftp.getFtp().enterLocalPassiveMode();
            } else {
                ftp.getFtp().enterLocalActiveMode();
            }
            if (ftp.makeDirs(fileName)) {
                String temp = fileName.replaceAll("^.*\\/", "");
                try (OutputStream os = ftp.getFtp().storeFileStream(temp)) {
                    converter.objectToStream(object, os);
                    os.flush();
                }
            } else {
                throw new IOException("目录创建失败");
            }
        } else {
            throw new IOException("连接到ftp服务器出错");
        }
    }

    public static void copyFile2Ftp(String fileName, InputStream input, boolean passiveMode) throws IOException {
        FtpHolder ftp = FtpUtils.getFtpClient(fileName);
        if (ftp.checkConnection()) {
            if (passiveMode) {
                ftp.getFtp().enterLocalPassiveMode();
            } else {
                ftp.getFtp().enterLocalActiveMode();
            }
            if (ftp.makeDirs(fileName)) {
                String temp = fileName.replaceAll("^.*\\/", "");
                ftp.getFtp().storeFile(temp, input);
            } else {
                throw new IOException("目录创建失败");
            }
        } else {
            throw new IOException("连接到ftp服务器出错");
        }
    }

    public static void copyFile2Ftp(FtpHolder ftp, String fileName, InputStream input, boolean passiveMode)
            throws IOException {
        if (ftp.checkConnection()) {
            if (passiveMode) {
                ftp.getFtp().enterLocalPassiveMode();
            } else {
                ftp.getFtp().enterLocalActiveMode();
            }
            if (ftp.makeDirs()) {
                String temp = StringUtils.hasText(fileName) ? fileName.replaceAll("^.*\\/", "") : ftp.getFileName();
                ftp.getFtp().setFileType(FTPClient.BINARY_FILE_TYPE);
                ftp.getFtp().storeFile(temp, input);
            } else {
                throw new IOException("目录创建失败");
            }
        } else {
            throw new IOException("连接到ftp服务器出错");
        }
    }

    public static void chunAnCopyFile2Ftp(FtpHolder ftp, String fileName, InputStream input, boolean passiveMode)
            throws IOException {
        if (ftp.checkConnection()) {
            if (passiveMode) {
                ftp.getFtp().enterLocalPassiveMode();
            } else {
                ftp.getFtp().enterLocalActiveMode();
            }
            if (ftp.makeDirs()) {
                String temp = StringUtils.hasText(fileName) ? fileName.replaceAll("^.*\\/", "") : ftp.getFileName();
                ftp.getFtp().setFileType(FTP.BINARY_FILE_TYPE);
                ftp.getFtp().storeFile(temp, input);
            } else {
                throw new IOException("目录创建失败");
            }
        } else {
            throw new IOException("连接到ftp服务器出错");
        }
    }

    public static void chunAnCopyFile2Ftp(FtpHolder ftp, String fileName, InputStream input, boolean passiveMode,
            String pathName) throws IOException {
        if (ftp.checkConnection()) {
            if (passiveMode) {
                ftp.getFtp().enterLocalPassiveMode();
            } else {
                ftp.getFtp().enterLocalActiveMode();
            }
            // 开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK).
            // if (FTPReply.isPositiveCompletion(ftp.getFtp().sendCommand("OPTS
            // UTF8",
            // "ON"))) {
            // LOCAL_CHARSET = "UTF-8";
            // SERVER_CHARSET = "UTF-8";
            // }
            ftp.getFtp().makeDirectory(pathName);
            ftp.getFtp().changeWorkingDirectory(pathName);
            if (ftp.makeDirs()) {
                String temp = StringUtils.hasText(fileName) ? fileName.replaceAll("^.*\\/", "") : ftp.getFileName();
                ftp.getFtp().setFileType(FTP.BINARY_FILE_TYPE);
                ftp.getFtp().storeFile(temp, input);
            } else {
                throw new IOException("目录创建失败");
            }
        } else {
            throw new IOException("连接到ftp服务器出错");
        }
    }
}
代码语言:javascript
复制
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemException;
import org.apache.commons.vfs2.FileSystemManager;
import org.apache.commons.vfs2.VFS;
import org.springframework.util.StreamUtils;

/*
 * 依赖org.apache.commons.logging.LogFactory
 */
public class Unzip {
    private static FileSystemManager manager = null;

    private static void init() throws FileSystemException {
        if (manager == null) {
            manager = VFS.getManager();
        }
    }

    public static List<String> unzipFile(String zipFileName,
            String targetBaseDirName) throws IOException {
        return unzipFile(zipFileName, targetBaseDirName, Charset.forName("GBK"));
    }

    public static List<String> unzipFile(URI fileUri, String targetBaseDirName)
            throws IOException {
        return unzipFile(new File(fileUri), targetBaseDirName);
    }

    public static List<String> unzipFile(File file, String targetBaseDirName)
            throws IOException {
        return unzipFile(file, targetBaseDirName, Charset.forName("GBK"));
    }

    public static List<String> unzipFile(String zipFileName,
            String targetBaseDirName, Charset charset) throws IOException {
        File f = null;
        try{
            f = new File(new URI(zipFileName));
        }catch(URISyntaxException e){
            f = new File(zipFileName);
        }
        return unzipFile(f, targetBaseDirName, charset);
    }

    public static List<String> unzipFile(URI fileUri, String targetBaseDirName,
            Charset charset) throws IOException {
        return unzipFile(new File(fileUri), targetBaseDirName, charset);
    }

    public static List<String> unzipFile(File file, String targetBaseDirName,
            Charset charset) throws IOException {
        init();
        targetBaseDirName = targetBaseDirName.replaceAll("[\\\\\\/]+$", "")
                + "/";
        // 根据ZIP文件创建ZipFile对象
        try (ZipFile zipFile = new ZipFile(file, charset)) {

            // 获取ZIP文件里所有的entry
            Enumeration<? extends ZipEntry> entrys = zipFile.entries();
            // 遍历所有entry
            List<String> result = new ArrayList<String>();
            while (entrys.hasMoreElements()) {
                ZipEntry entry = entrys.nextElement();
                // 获得entry的名字
                String entryName = entry.getName();
                String targetFileName = targetBaseDirName + entryName;
                targetFileName = targetFileName.replaceAll("\\%", "%25");
                FileObject fo = manager.resolveFile(targetFileName);
                if (entry.isDirectory()) {
                    // 如果entry是一个目录,则创建目录
                    fo.createFolder();
                } else {
                    //只记录文件
                    result.add(targetFileName);
                    try (OutputStream os = fo.getContent().getOutputStream()) {
                        try (InputStream is = zipFile.getInputStream(entry)) {
                            StreamUtils.copy(is, os);
                        }
                    }
                }
                fo.getContent().setLastModifiedTime(entry.getTime());
            }
            return result;
        }
    }
代码语言:javascript
复制
/**
 * 获取操作系统信息
 */
public final class OSInfo {

    private static final String OS_NAME = System.getProperty("os.name").toLowerCase();

    public static String getOSName() {
        return System.getProperty("os.name");
    }

    public static String getOSVersion() {
        return System.getProperty("os.version");
    }

    public static boolean isWindows() {
        return OS_NAME.contains("windows");
    }

    public static boolean isMac() {
        return OS_NAME.contains("mac") && OS_NAME.indexOf("os") > 0 && !OS_NAME.contains("x");
    }

    public static boolean isLinux() {
        return OS_NAME.contains("linux");
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档