去掉java反编译(JD-GUI)生成的源文件中注释
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class JDGUIRemarkRemover {
private int counter = 0; public JDGUIRemarkRemover() {
}; public static void main(String[] args) {
String filePath = ""; //放待处理的文件路径或者文件夹路径 JDGUIRemarkRemover jdGUIRemarkRemover = new JDGUIRemarkRemover();
if (jdGUIRemarkRemover.process(filePath)) {
System.out.println("处理java文件 " + jdGUIRemarkRemover.getCounter() + "个!");
} else {
System.err.println("处理失败!");
}
} private boolean process(String s) {
File f = new File(s); if (!f.exists()) {
return false;
} if (f.isFile()) {
try {
erase(f);
} catch (RuntimeException ex) {
System.err.println(ex.getMessage());
}
} else if (f.isDirectory()) {
String[] fs = f.list();
for (String sr : fs) {
sr = f.getAbsolutePath() + File.separator + sr;
process(sr);
}
} else {
System.out.println("参数错误!");
} return true;
} private void erase(File f) throws RuntimeException {
List<String> tmp = new ArrayList<String>(); String name = f.getName();
String path = f.getParent() + File.separator;
BufferedReader br = null; if (!name.endsWith(".java")) {
throw new RuntimeException("不是JAVA文件 : " + name);
} System.out.println("处理文件[" + (path + name) + "]"); try {
br = new BufferedReader(new FileReader(f));
String s = null;
while ((s = br.readLine()) != null) {
tmp.add(s);
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} f.delete(); File copy = new File(path + name);
BufferedWriter bw = null;
try {
copy.createNewFile(); bw = new BufferedWriter(new FileWriter(copy, true)); for (Iterator<String> itr = tmp.iterator(); itr.hasNext();) {
String s = itr.next(); if (s.contains("Location:") || s.contains("Qualified Name:")
|| s.contains("JD-Core Version:")) {
counter++;
return;
} int begin = s.indexOf("/*");
int end = s.indexOf("*/"); if (end != -1 && begin != -1) {
s = s.substring(end - begin + 3, s.length());
} bw.write(s + "\n");
bw.flush();
}
} catch (IOException e) {
e.printStackTrace();
} counter++;
} private int getCounter() {
return counter;
}
}
去掉java反编译(JD-GUI)生成的源文件中注释的更多相关文章
- 转:介绍几个著名的实用的Java反编译工具,提供下载
from :http://www.glorze.com/219.html 反编译 众所周知,我们将源代码进行编译,生成可执行的程序或者容器发布包,这个将代码转换的过程就是编译的过程,而反编译就是将这些 ...
- Java 反编译工具哪家强?对比分析瞧一瞧
前言 Java 反编译,一听可能觉得高深莫测,其实反编译并不是什么特别高级的操作,Java 对于 Class 字节码文件的生成有着严格的要求,如果你非常熟悉 Java 虚拟机规范,了解 Class 字 ...
- eclipse安装JAVA反编译插件
前言:在实际的开发中几乎都会使用到一些框架来辅助项目的开发工作,对于一些框架的代码我们总怀有一些好奇之心,想一探究竟,有源码当然更好了,对于有些JAR包中的代码我们就需要利用反编译工具来看一下了,下面 ...
- 【转】Eclipse Class Decompiler——Java反编译插件
闲暇之余,写了一个Eclipse下的Java反编译插件:Eclipse Class Decompiler,整合了目前最好的2个Java反编译工具Jad和JD-Core,并且和Eclipse Class ...
- 7 款开源 Java 反编译工具
今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...
- myeclipse和eclipse安装Java反编译插件
为myeclipse和eclipse安装Java反编译插件 插件所需包 1.解压jad1.5.8g.zip.将jad.exe放到jre的bin目录下,下载地址: http://ishare.ia ...
- 7款开源Java反编译工具
今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...
- Java 反编译工具下载
反编译,通俗来讲,就是将.java 文件经过编译生成的 .class 文件还原.注意这里的还原不等于 .java 文件.因为Java编译器在编译.java 文件的时候,会对代码进行一些处理. 那么接下 ...
- Java反编译工具(Java Decompiler)
Java Decompiler是一种非常实用的JAVA反编译工具,可以对整个jar包进行反编译,也可以将其集成到eclipse上,非常方便的根据class文件的源码.,官网地址http://jd.be ...
随机推荐
- 基数---SQL Server 2008 Bible
关系类型 主要实体的键 次要实体的键 一对一 主要实体-主键-单个元组 主要实体-主键-单个元组 一对多 主要实体-主键-单个元组 次要实体-外键-多个元组 多对多 多个元组 多个元组
- sgu495:概率dp / 推公式
概率题..可以dp也可以推公式 抽象出来的题目大意: 有 n个小球,有放回的取m次 问 被取出来过的小球的个数的期望 dp维护两个状态 第 i 次取出的是 没有被取出来过的小球的 概率dp[i] 和 ...
- centos6.4安装Vmware exsi CLI
1,Vmware官网Exsi CLI下载链接 https://download2.vmware.com/software/sdk/VMware-vSphere-CLI-4.1.0-254719.x86 ...
- Bugscan学习笔记------关于urlparse
urlparse模块主要是把url拆分为6部分,并返回元组.并且可以把拆分后的部分再组成一个url.主要有函数有urljoin.urlsplit.urlunsplit.urlparse等. ***** ...
- c语言筛选质数
#include <stdio.h> #include <stdlib.h> #include <math.h> int isit(int num) { int i ...
- poj 2251 Dungeon Master(bfs)
Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...
- C# 初识Ref和Out
首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所 ...
- python进阶之路4.1---生成器与迭代器
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- UTF8转GB2312(UTF8解码)
小弟C++上手没多久,代码不严谨之处敬请见谅.英语也不是很好,有的是直接使用的拼音. string MyUTF_8toGB2312(string str) { ,,str.c_str(),-,NULL ...
- VS2010使用附加进程的方式调试IIS中的页面介绍
1. 对要测试的页面设置断点,然后选择”调试”->”附加到进程”,在进程中选择w3wp.exe进程(需要先打开需测试的页面) 2. 配置完成,当打开你需要测试的页面的时候 ...