/* */ import org.dom4j.io.SAXReader; /* */ /* */ public class ForHttpXMLAction extends HostAccessAction /* */ { /* 75 */ private String sendHeadFormatName = null; /* */ /* 80 */ private String sendFormatName = "httpSendFormat"; /* */ /* 85 */ private String receiveFormatName = "httpReceiveFormat"; /* */ /* 90 */ private String receiveHeadFormatName = null; /* */ /* 95 */ private int timeOut = 0; /* */ /* 100 */ private String serviceName = null; /* */ /* 105 */ private String urlEncoding = "ISO8859-1"; /* */ /* 110 */ private String encoding = "GBK"; /* */ /* 115 */ private String inputFeild = null; /* */ /* 120 */ private String outputFeild = null; /* */ /* 125 */ private String chanlTradNo = null; /* */
但是幸好的是,上面的行号的注释,比如这样“/* 115* /”
为了方便用eclipse的调试debug,我写了一个程序,来格式式行号,使上面的行号按照注释的对齐,这样调试起来特别方便
你只需要把jd-gui.exe反编译生成的源码目录传到main方法即可,下面代码就会生成一个与源代码平级同名+bak的文件,话不多说,直接看代码
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; import java.util.ArrayList; import java.util.Collections; import java.util.Hashtable; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.core.helpers.FileUtils; public class FormatSrc { public static void main(String[] args) throws Exception { doFo("H:/work/src/7sdfasdf"); } private static String common = null; public static void doFo(String path) { List<File> javaFile = getJavaFile(path); for (File file : javaFile) { doCreateFile(file, path); } } public static void doCreateFile(File file, String distDir) { String absolutePath = file.getAbsolutePath(); Map<Integer, String> map = doFill(format(absolutePath)); List<Integer> keyList = new ArrayList<Integer>(map.keySet()); Collections.sort(keyList); // (file.getPath()); // file.deleteOnExit(); String p1 = absolutePath.substring(0, distDir.substring(0, distDir.lastIndexOf("/")).length()); String p2 = absolutePath.substring(distDir.length() , absolutePath.length()); if (common == null) { common = distDir.subSequence(distDir.lastIndexOf("/"), distDir.length()) + "-bak"; } String path = p1 + "/" + common + "/" + p2; File distFile = new File(path); try { org.apache.commons.io.FileUtils.forceDeleteOnExit(distFile.getParentFile()); if (!distFile.exists()) { distFile.getParentFile().mkdirs(); } } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } finally { } Writer out = null; BufferedWriter bw = null; try { out = new FileWriter(distFile); bw = new BufferedWriter(out); for (Integer key : keyList) { bw.write(key + map.get(key)); bw.newLine(); bw.flush(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (bw != null) { try { bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } public static Integer getLastKey(Set<Integer> keySet) { if (keySet == null || keySet.size() == 0) { return 0; } List<Integer> list = new ArrayList<Integer>(keySet); Collections.sort(list); Collections.reverse(list); return list.get(0); } public static List<File> getJavaFile(String dir) { List<File> javaFiles = new ArrayList<File>(); File file = new File(dir); if (file.exists()) { File[] list = file.listFiles(); if (list != null && list.length > 0) { for (File f : list) { if (f.isFile() && f.getName().lastIndexOf(".java") != -1) { javaFiles.add(f); } else { List<File> javaFile = getJavaFile(f.getAbsolutePath()); if (javaFile != null) { javaFiles.addAll(javaFile); } } } } } return javaFiles; } public static Map<Integer, String> doFill(Map<Integer, String> map) { Map<Integer, String> _map = new Hashtable<Integer, String>(); Set<Integer> keySet = map.keySet(); int up; int distance; for (Integer i : keySet) { if (i > 1) { up = getLastKey(_map.keySet()); if (i - up > 1) { for (int j = up + 1; j <= i - 1; j++) { _map.put(j, "#"); } } else { _map.put(i, map.get(i)); } } else { _map.put(i, map.get(i)); } } return _map; } public static Map<Integer, String> format(String path) { Map<Integer, String> map = new Hashtable<Integer, String>(); File file = new File(path); Reader in = null; BufferedReader br = null; String oneLine = null; String lineNum = null; String _lineNum = null; String lineCode = null; boolean b = false; boolean a = false; try { in = new FileReader(file); br = new BufferedReader(in); // /* 19 */ private static Map cacheMap = new HashMap(); int i = 1; while ((oneLine = br.readLine()) != null && oneLine != "") { if (StringUtils.isNotBlank(oneLine)) { if (oneLine.lastIndexOf("*/") == -1) { map.put(i, oneLine); i++; b = true; if (oneLine.indexOf("Location:") != -1) { break; } } else { if (oneLine.indexOf("Location:") != -1) { break; } _lineNum = oneLine.split("\\*/")[0]; lineNum = _lineNum.substring(2, _lineNum.length() - 1); lineCode = oneLine.substring(_lineNum.length() + 2, oneLine.length()); lineCode = lineCode == "" ? "#" : lineCode; if (StringUtils.isBlank(lineNum)) { Integer lastKey = getLastKey(map.keySet()); lastKey = lastKey == null ? 0 : lastKey; map.put(lastKey + 1, lineCode); } else { map.put(Integer.valueOf(StringUtils.trim(lineNum)), lineCode); } } // (oneLine + " " + lineNum + " " + lineCode); } else { // ("---->" + oneLine + "<--------" + // lineNum); if (oneLine.indexOf("Location:") != -1) { b = true; a = true; } if (b && a) { break; } else { map.put(i, oneLine); i++; } } } if (oneLine == "" && a) { map.put(i, oneLine); i++; } // i = 1; } catch (Exception e) { System.out.println("----->" + oneLine + "<--------"); e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } return map; } }