您的位置:首页 > 编程语言

一个删除代码注释、空格、换行的工具

2010-01-12 21:23 423 查看
今天在群里面一个网友提起说DWR之类的核心JS文件注释和空格占了大部分空间,如果去掉注释可以极大提高网站

的响应速度,正好下午没事,花了一个多小时帮他写了个这样的工具出来,工具虽然简单,但是很实用,贴出来跟大

家分享下。适用于js跟java文件。

public class CompressCode {

private boolean nodeflag=false; //注释flag,初始化为false,没有进入注释区

private int removecount=0;

private boolean strflag=false; //""符号注释

private boolean singlenode=false; //单行注释

public void processCode(String oldfile,String newfile){

try {

BufferedReader reader=new BufferedReader(new FileReader(oldfile));

BufferedWriter writer=new BufferedWriter(new FileWriter(newfile,false));

String recoder=null;

while((recoder=reader.readLine())!=null){

recoder=recoder.trim();

if(recoder.startsWith("//")||recoder.startsWith("/t//"))

continue;

char[] chs=recoder.toCharArray();

processChar(chs);

writer.write(chs, 0,chs.length-removecount);

writer.write(32);

removecount=0;

}

writer.flush();

writer.close();

reader.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

private void processChar(char[] chs){

for(int i=0;i<chs.length;i++){

//进入注释

if(chs[i]=='/'&&i<chs.length-1&&chs[i+1]=='*'&&!nodeflag&&!singlenode&&!strflag){

removechar(chs,i);

nodeflag=true;

continue;

}

//判断是否计入了“”

if(chs[i]=='"'&&!nodeflag&&!singlenode){

if(!strflag)

strflag=true;

else

strflag=false;

}

//进入单行注释

if(chs[i]=='/'&&i<chs.length-1&&chs[i+1]=='/'&&!strflag&&!nodeflag){

removechar(chs,i);

singlenode=true;

continue;

}

//删除单行注释

if(singlenode){

if(i==chs.length-1){

singlenode=false;

}

removechar(chs,i);

continue;

}

//跳出注释

if(nodeflag&&chs[i]=='*'&&i<chs.length-1&&chs[i+1]=='/'){

removechar(chs,i);

removechar(chs,i+1);

nodeflag=false;

continue;

}

if(nodeflag){

removechar(chs,i);

}else{

if(chs[i]=='/n'){

removechar(chs,i);

}

}

}

}

private void removechar(char[] chs,int rmv_index){

removecount++;

for(int i=rmv_index;i<chs.length-1;i++){

chs[i]=chs[i+1];

}

}

public static void main(String[] args) {

CompressCode compress=new CompressCode();

compress.processCode(args[0],args[1]);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: