文件的复制、读取,图片的裁剪等操作。
- 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 "";
- }
- }