去掉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 ...
随机推荐
- bzoj1681[Usaco2005 Mar]Checking an Alibi 不在场的证明
Description A crime has been comitted: a load of grain has been taken from the barn by one of FJ's c ...
- hdu 5396 Expression(区间dp)
Problem Description Teacher Mai has n numbers a1,a2,⋯,anand n−1 operators("+", "-&quo ...
- Laravel-高级篇-Auth-数据迁移-数据填充
(慕课网_轻松学会Laravel-高级篇_天秤vs永恒老师_http://www.imooc.com/learn/702) 一.生成Auth所需文件 在Artisan控制台输入以下命令 php art ...
- UVA 10198 Counting
Counting The Problem Gustavo knows how to count, but he is now learning how write numbers. As he is ...
- hdfs经常使用命令
hadoop hdfs经常使用命令 hadoop fs -ls /user/deploy/recsys/workspace/ouyangyewei 查看ouyangyewei文件夹文件 hadoop ...
- Dalvik虚拟机Java堆创建过程分析
文章转载至罗升阳CSDN社区博客,原地址: http://blog.csdn.net/luoshengyang/article/details/6557518 近年来,手机移动平台越来越火爆.打开自己 ...
- mysql高可用方案MHA介绍
mysql高可用方案MHA介绍 概述 MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10-30秒内),完成故障切换,部署MHA, ...
- 程序员的家!我终于拥有自己的blog了!!!
经过多次提交诚恳的家园申请,终于得到了审核通过!今天就开始了我的.net成长之路!!!
- compilation 元素(ASP.NET 设置架构)
配置 ASP.NET 用于编译应用程序的所有编译设置. <configuration> 元素 system.web 元素(ASP.NET 设置架构) compilation 元素( ...
- JS时间日期
JS获取当前时间 var myDate = new Date(); myDate.get[UTC]FullYear(); //获取完整的年份(4位,1970-????)myDate.get[UT ...