添加maven
<!--jbsdiff--> <dependency> <groupId>io.sigpipe</groupId> <artifactId>jbsdiff</artifactId> <version>1.0</version> </dependency>
工具类
package cn.stylefeng.guns.core.util; import io.sigpipe.jbsdiff.Diff; import io.sigpipe.jbsdiff.InvalidHeaderException; import org.apache.commons.compress.compressors.CompressorException; import java.io.*; public class ByteUtil { /** * 获得指定文件的byte数组 */ public static byte[] getBytes(String filePath){ byte[] buffer = null; try { File file = new File(filePath); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(1024); byte[] b = new byte[1024]; int n; while ((n = fis.read(b)) != -1) { bos.write(b, 0, n); } fis.close(); bos.close(); buffer = bos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return buffer; } /** * 根据byte数组,生成文件 */ public static void getFile(byte[] bfile, String filePath,String fileName) { BufferedOutputStream bos = null; FileOutputStream fos = null; File file = null; try { File dir = new File(filePath); if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在 dir.mkdirs(); } file = new File(filePath+"\\"+fileName); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); bos.write(bfile); } catch (Exception e) { e.printStackTrace(); } finally { if (bos != null) { try { bos.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } /** * 根据文件名和路径生成OutputStream * @param filePath * @param fileName * @return */ public static OutputStream getOutputStream(String filePath,String fileName) { OutputStream os = null; File file = null; try { File dir = new File(filePath); if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在 dir.mkdirs(); } file = new File(filePath+"\\"+fileName); os = new FileOutputStream(file); } catch (Exception e) { e.printStackTrace(); } finally { // if (os != null) { // try { // os.close(); // } catch (IOException e1) { // e1.printStackTrace(); // } // } } return os; } public static void main(String [] args) throws IOException, InvalidHeaderException, CompressorException{ String oldFilePath = "F:\\Downloads\\壁纸\\红小豆2.jpg"; String newFilePath = "F:\\Downloads\\壁纸\\红小豆4.jpg"; String outFilePath = "F:\\Downloads\\壁纸"; String outFileName = "红小豆N.jpg"; Diff.diff(ByteUtil.getBytes(oldFilePath),ByteUtil.getBytes(newFilePath),ByteUtil.getOutputStream(outFilePath,outFileName)); } }