首页 > 代码库 > FileUtil_2

FileUtil_2

文件的复制、读取,图片的裁剪等操作。


package cn.huwhy.common.utils;

import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Iterator;

public class FileUtils {
    public static void copyFile(String source, String target) throws IOException {
        BufferedInputStream inBuff = null;
        BufferedOutputStream outBuff = null;
        try {
            // 新建文件输入流并对它进行缓冲
            inBuff = new BufferedInputStream(new FileInputStream(new File(source)));

            // 新建文件输出流并对它进行缓冲
            outBuff = new BufferedOutputStream(new FileOutputStream(new File(target)));

            // 缓冲数组
            byte[] b = new byte[1024 * 5];
            int len;
            while ((len = inBuff.read(b)) != -1) {
                outBuff.write(b, 0, len);
            }
            // 刷新此缓冲的输出流
            outBuff.flush();
        } finally {
            // 关闭流
            if (inBuff != null)
                inBuff.close();
            if (outBuff != null)
                outBuff.close();
        }
    }

    public static void copyFile(File sourceFile, File targetFile) throws IOException {
        BufferedInputStream inBuff = null;
        BufferedOutputStream outBuff = null;
        try {
            // 新建文件输入流并对它进行缓冲
            inBuff = new BufferedInputStream(new FileInputStream(sourceFile));

            // 新建文件输出流并对它进行缓冲
            outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));

            // 缓冲数组
            byte[] b = new byte[1024 * 5];
            int len;
            while ((len = inBuff.read(b)) != -1) {
                outBuff.write(b, 0, len);
            }
            // 刷新此缓冲的输出流
            outBuff.flush();
        } finally {
            // 关闭流
            if (inBuff != null)
                inBuff.close();
            if (outBuff != null)
                outBuff.close();
        }
    }

    public static void copyFile(File sourceFile, String savePath, String fileName) throws IOException {
        BufferedInputStream inBuff = null;
        BufferedOutputStream outBuff = null;
        try {
            // 新建文件输入流并对它进行缓冲
            inBuff = new BufferedInputStream(new FileInputStream(sourceFile));

            File pathFile = new File(savePath);
            if (!pathFile.exists()) {
                pathFile.mkdirs();
            }
            // 新建文件输出流并对它进行缓冲
            outBuff = new BufferedOutputStream(new FileOutputStream(new File(pathFile, fileName)));

            // 缓冲数组
            byte[] b = new byte[1024 * 5];
            int len;
            while ((len = inBuff.read(b)) != -1) {
                outBuff.write(b, 0, len);
            }
            // 刷新此缓冲的输出流
            outBuff.flush();
        } finally {
            // 关闭流
            if (inBuff != null)
                inBuff.close();
            if (outBuff != null)
                outBuff.close();
        }
    }

    public File getFile(String savePath, String fileName) {
        return null;
    }

    public static byte[] getFile(String filePath) throws IOException {
        File file = new File(filePath);
        file.exists();
        byte[] buf = new byte[1024];
        InputStream in = new FileInputStream(file);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int n;
        while ((n = in.read(buf)) != -1) {
            out.write(buf, 0, n);
        }
        in.close();
        return out.toByteArray();
    }

    public static String checkImgSize(byte[] img) throws IOException {
        ByteArrayInputStream in = new ByteArrayInputStream(img);
        BufferedImage buffer = ImageIO.read(in);
        int width = buffer.getWidth();
        int height = buffer.getHeight();
        return "{\"width\":" + width + ",\"height\":" + height + "}";
    }

    /**
     * 图片裁剪
     */
    public static byte[] cut(byte[] img, String formatName, int x, int y, int width, int height) throws IOException {
        ByteArrayInputStream in = new ByteArrayInputStream(img);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ImageInputStream iis;
        Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(formatName);
        ImageReader reader = it.next();
        iis = ImageIO.createImageInputStream(in);
        reader.setInput(iis);
        ImageReadParam param = reader.getDefaultReadParam();
        Rectangle rect = new Rectangle(x, y, width, height);
        param.setSourceRegion(rect);
        BufferedImage bi = reader.read(0, param);
        ImageIO.write(bi, formatName, out);
        return out.toByteArray();
    }

    public static void zoom(File srcfile, String suffix, int width, String savePath, String zoomName) throws IOException {
        BufferedImage result = null;
        if (!srcfile.exists()) {
            System.out.println("文件不存在");
        }
        BufferedImage im = ImageIO.read(srcfile);


            /* 新生成结果图片 */
        int height = im.getHeight(null) * width / im.getWidth(null);//按比例,将高度缩减
        result = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);

        result.getGraphics().drawImage(
                im.getScaledInstance(width, height,
                        java.awt.Image.SCALE_SMOOTH), 0, 0, null);
        File zoomFile = new File(savePath, zoomName);
        if(!zoomFile.exists()){
            zoomFile.getParentFile().mkdirs();
        }
        FileOutputStream out = new FileOutputStream(zoomFile);
        ImageIO.write(result, suffix, out);
        out.flush();
        out.close();
    }

    public static String getFileExt(String filename) {
        int index = filename.lastIndexOf('.');
        if (index > 0) {
            return filename.substring(index + 1);
        }
        return "";
    }
}


FileUtil_2