深受微信的撤回所苦,于是乎看到了知乎上一位大大的说明,但是每次只能找回一个太麻烦了,于是就实现了支持文件夹找回微信转码的图片的java版
上代码:
private static int magic=0x4C;
static String[] allowExt=new String[]{"","dat"};
public static void decodeWechat(File dict) throws IOException{
if(dict.isFile()){
String fullName,ext=null;
fullName=dict.getName();
ext=getFileExt(fullName);
if(Arrays.asList(allowExt).contains(ext)){
File outFile=new File(dict.getParentFile(),fullName+"_new.jpg");
byte[] byArr=IOUtils.toByteArray(new FileInputStream(dict));
for(int i=0,len=byArr.length;i<len;i++){
byArr[i]=(byte)(byArr[i]^magic);
}
FileOutputStream output=new FileOutputStream(outFile);
IOUtils.write(byArr, output);
IOUtils.closeQuietly(output);
}
}else{
File[] fileArr=dict.listFiles();
for(int i=0,len=fileArr.length;i<len;i++){
decodeWechat(fileArr[i]);
}
}
}
public static String getFileExt(String fileName){
if(fileName==null){
return "";
}else{
int i=fileName.lastIndexOf(".");
if(i<0){
return "";
}else{
return fileName.substring(i+1).toLowerCase();
}
}
}
参考文章:
https://zhuanlan.zhihu.com/p/21458386
https://www.zhihu.com/question/35056157