WeChatImgRevert.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package me.yoqi.wechatdecode;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.util.ArrayList;
  8. import java.util.Arrays;
  9. import java.util.concurrent.ExecutorService;
  10. import java.util.concurrent.Executors;
  11. public class WeChatImgRevert {
  12. static String rootPath = "C:/Users/liuyuqi/AppData/Local/Packages/TencentWeChatLimited.forWindows10_sdtnhv12zgd7a/LocalCache/Roaming/Tencent/WeChatAppStore/WeChatAppStore Files/ab3255/Data/";
  13. public static void main(String[] args) {
  14. ExecutorService pool = Executors.newFixedThreadPool(10);
  15. Runnable r = () -> {
  16. String[] fileName = GetFileName.getFileName(rootPath);
  17. int i = 0;
  18. for (String name : fileName) {
  19. try (InputStream reader = new FileInputStream(rootPath + name)) {
  20. try (OutputStream writer = new FileOutputStream("D:/photo/" + name + ".jpg")) {
  21. byte[] bytes = new byte[1024];
  22. int b;
  23. while ((b = reader.read(bytes)) != -1) {// 这里的in.read(bytes);就是把输入流中的东西,写入到内存中(buffer)。
  24. // System.out.println("b = " + b + " b ^ 241 = " +
  25. // (b ^ 241));
  26. writer.write(b ^ 56611);// 241这个值是现算的,每个人电脑的值都不一致
  27. writer.flush();
  28. }
  29. }
  30. System.out.println(i++);
  31. } catch (Exception e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. };
  36. pool.submit(r);
  37. pool.shutdown();
  38. // System.out.println("--------------------------------");
  39. //
  40. // ArrayList<String> listFileName = new ArrayList<String>();
  41. //
  42. // GetFileName.getAllFileName("F:/dat", listFileName);
  43. //
  44. // for (String name : listFileName) {
  45. // System.out.println(name);
  46. // }
  47. }
  48. }
  49. class GetFileName {
  50. public static String[] getFileName(String path) {
  51. File file = new File(path);
  52. String[] fileName = file.list();
  53. return fileName;
  54. }
  55. public static void getAllFileName(String path, ArrayList<String> fileName) {
  56. File file = new File(path);
  57. File[] files = file.listFiles();
  58. String[] names = file.list();
  59. if (names != null)
  60. fileName.addAll(Arrays.asList(names));
  61. for (File a : files) {
  62. if (a.isDirectory()) {
  63. getAllFileName(a.getAbsolutePath(), fileName);
  64. }
  65. }
  66. }
  67. }