`
jxuin
  • 浏览: 30051 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

删除某个目录下js文件中的注释

阅读更多
import java.io.BufferedReader;   
import java.io.BufferedWriter;
import java.io.File;   
import java.io.FileReader;   
import java.io.FileWriter;
import java.util.Scanner;
  
/**  
 * @author winnie  
 *   
 */  
public class DelCommentsInJava {   
  
    private static final char SLASH = '/';   
  
    private static final char STAR = '*';   
  
    private static final char NEWLINE = '\n';   
       
    //斜杠   
    private static final int TYPE_SLASH = 1;   
       
    //星号   
    private static final int TYPE_STAR = 2;   
  
    // 双斜杠类型的注释   
    private static final int TYPE_DSLASH = 3;  
    
   //  /*的注释
    private static final int TYPE_STAR_SLASH = 4;   
  
    public static char[] del(char[] _target, int _start, int _end) {   
        char[] tmp = new char[_target.length - (_end - _start + 1)];   
        System.arraycopy(_target, 0, tmp, 0, _start);   
        System.arraycopy(_target, _end + 1, tmp, _start, _target.length - _end   
                - 1);   
        return tmp;   
    }   
  
    public static String delComments(String _target) {   
        int preType = 0;   
        int cur = -1, token = -1;   
        char[] input =  _target.toCharArray();   
        for (cur = 0; cur < input.length; cur++) {   
            if (input[cur] == SLASH) {   
                if (preType == TYPE_STAR_SLASH) {   
                	if(input[cur-1] == STAR)
                	{
                		input = del(input, token, cur);   
                        cur = token - 1;   
                        preType = 0;  
                	}else {
                		preType = TYPE_STAR_SLASH;   
                	}
                } else if (preType == TYPE_SLASH) {   
                	token = cur - 1;   
                	if(input[token] == SLASH)
                	{
                		//token = cur - 1;   
                		preType = TYPE_DSLASH;   
                	}
                } else if (preType == TYPE_DSLASH){   
                    preType = TYPE_DSLASH;   
                } else {
                	preType = TYPE_SLASH;   
                }
            } else if (input[cur] == STAR) {   
            	if(preType == TYPE_STAR_SLASH){
            		preType = TYPE_STAR_SLASH;   
            	}
            	else if (preType == TYPE_SLASH) {
                	if(input[cur-1] == SLASH){
                		token = cur - 1;   
                        preType = TYPE_STAR_SLASH;   
                	}else{
                		preType = TYPE_STAR;   
                	}
                }else if  (preType == TYPE_DSLASH) {
                	preType = TYPE_DSLASH;   
                } else{
                	preType = TYPE_STAR;   
                }
                
            } else if(input[cur] == NEWLINE)   
            	{   
                	if(preType == TYPE_DSLASH)   
                	{   
                		input = del(input, token, cur-1);   
                		cur = token - 1;   
                		preType = 0;   
                	}   
            	}   
  
        	}   
        return new String(input);   
    }   
  
    public static void main(String[] args) {   
        try {   
            Scanner sc =new Scanner(System.in);
        	System.out.println("输入目录:");
        	String dirname = sc.next();
        	File dir = new File(dirname);   
        	File[]   listfile   =   dir.listFiles();  
        	for(int i = 0;i<listfile.length;i++)
        	{
        		BufferedReader reader = new BufferedReader(new FileReader(listfile[i]));   
                StringBuilder content = new StringBuilder();   
                String tmp = null;   
                while ((tmp = reader.readLine()) != null) {   
                    content.append(tmp);   
                    content.append("\n");   
                }   
                String target = content.toString();   
                String target1 = delComments(target); 
                File f = new File(listfile[i]+".bak");
                BufferedWriter outputbak = new BufferedWriter(new FileWriter(f));
                outputbak.write(target);
                outputbak.close();
                BufferedWriter output = new BufferedWriter(new FileWriter(listfile[i]));
                output.write(target1);
                output.close();
        	}
        } catch (Exception e) {   
  
        }   
    }
}  
分享到:
评论
1 楼 richer 2009-08-20  

好东西。学习了。

相关推荐

    js压缩工具,单个文件和多个文件同时都可以导入

    标题中提到的"js压缩工具"是一种专门针对JavaScript文件进行优化的工具,它可以将单个或多个JavaScript文件合并并压缩,消除其中的空白、注释和不必要的字符,同时进行代码混淆,使文件更紧凑,加载更快。...

    Notes-App:使用命令参数在json文件上创建,读取,删除和列出注释的节点应用程序

    3. **删除注释**:如果需要删除某个注释,用户可以提供相应的标识或索引来定位要删除的注释。Notes-App会找到对应的注释对象并从JSON文件中移除,然后更新文件内容。 4. **列举注释**:Notes-App还支持列举所有存储...

    javascript代码压缩工具

    JavaScript代码压缩工具是Web开发中不可或缺的一部分,它们主要用于减少JavaScript文件的大小,从而提高网页加载速度,节省带宽,优化用户体验。在这个过程中,JavaScript代码压缩工具通过删除不必要的空格、换行符...

    原创实用无限级js梅花树目录

    本项目"原创实用无限级js梅花树目录"正是一种这样的解决方案,它利用JavaScript(js)和层叠样式表(css)技术来创建一个无限层级的目录树,呈现出梅花形状的视觉效果。这个项目不仅具有创新性,而且具有实用性,...

    使用pdfview加载PDF文件

    当用户完成阅读或不再需要某个PDF时,应用应提供一个选项来删除文件。这同样涉及到文件系统的操作,通过删除指定路径的文件即可实现。 实现"项目各种需求"可能包括但不限于以下几点: 1. **权限管理**:确保只有...

    jQuery图片文件批量上传队列代码

    8. `easyUpload.js` 是核心的JavaScript文件,包含了实现批量上传逻辑的函数和事件处理程序。通过阅读源码,我们可以深入理解其实现机制,包括文件选择、队列管理、异步上传等部分。 9. `font` 和 `img` 目录可能...

    基于Java的实例源码-JS和CSS压缩混淆 JsCompressor.zip

    在IT行业中,优化网站性能是至关重要的,其中一项关键技术就是对JavaScript(JS)和Cascading Style Sheets(CSS)进行压缩和混淆。本实例源码"JS和CSS压缩混淆 JsCompressor.zip"提供了基于Java实现的工具,用于...

    EjerjcicioJS:JavaScript的第5条注释的内容

    在给定的“EjerjcicioJS”练习中,提到的“JavaScript的第5条注释”可能是指一个特定的代码段或者练习的某个关键部分。在JS中,有多种注释方式,包括单行注释和多行注释,它们都不会被JavaScript引擎执行,仅用于...

    js初学者入门

    --&gt;`在不支持JS的浏览器中被忽略,而在支持的浏览器中执行,但若注释与语句在同一行,该语句不会执行。 JavaScript的数据类型包括: 1. 数字型:支持infinity和NaN。 2. 字符串型。 3. 布尔型。 4. 特殊类型:...

    Atom-atom-pull-requests,直接在atom编辑器中查看/编辑pull请求的注释.zip

    2. **查看差异**: 在编辑器中查看代码的添加、删除和修改,直观地理解PR带来的变化。 3. **直接编辑注释**: 在本地环境中直接回复评论,提高了沟通效率。 4. **代码高亮与提示**: 利用Atom的优秀代码高亮和自动补全...

    js日历控件.rar

    - JavaScript文件:包含了实现日历功能的脚本,包括事件处理、DOM操作、日期处理等逻辑。 - 可能还会有注释文件或者README,提供了关于如何使用和定制日历控件的指导。 学习这个日历控件,你可以了解到如何将...

    操作ini文件

    删除ini文件中的某个键值对,需要读取文件,移除指定的键值对,然后重新写入文件。如果要删除整个节,操作更为复杂,可能需要处理节的嵌套关系。 ### 查找ini文件内容 查找ini文件中的特定键值对,可以在解析ini...

    JavaScriptobfuscator是一款功能强大的JavaScript和Nodejs免费混淆器

    在压缩包文件`javascript-obfuscator-javascript-obfuscator-adb5f4e`中,可能包含了JavaScript Obfuscator的源码或者特定版本的二进制文件。这个文件名的格式通常表示这是一个Git仓库的某个特定提交哈希,意味着你...

    JavaScriptDOM编程艺术(第2版)PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一本关于JavaScript DOM编程技术的书籍——《JavaScript DOM编程艺术(第2版)》。尽管实际书籍内容并未给出,但从标题、描述及部分链接信息来看,这本书主要涉及JavaScript...

    Uncomment this to preserve the line number information for

    如果这个项目是关于软件开发的,那么这个提示可能存在于某个配置文件或源代码文件中,用于在特定情况下启用行号显示。例如,这可能是调试配置文件的一部分,或者是在编译时控制是否生成行号信息的标志。 总的来说,...

    JS淘宝手机购买选项代码.zip

    在JavaScript(JS)编程中,实现淘宝手机购买选项的功能是一项常见的任务,这涉及到前端交互设计以及数据处理。这个"JS淘宝手机购买选项代码.zip"压缩包包含了一个示例,用于展示如何在移动电商平台上创建一个商品...

    JavaScript试题集

    - **外部式**:将JavaScript代码写在一个单独的.js文件中,并通过`&lt;script src="yourfile.js"&gt;&lt;/script&gt;`标签引用该文件。 #### 2. 预测以下代码片段的输出结果: ```javascript var str; alert(typeof str); ``` ...

    javascript解压缩

    例如,使用像UglifyJS或Terser这样的工具,可以自动处理JavaScript文件的压缩工作。 混淆则是将代码转化为难以阅读的形式,它不仅压缩代码,还更改变量和函数名称为无意义的短字符串,以增加代码的保密性。虽然这...

    YUI compressor右键压缩脚本

    1. **下载与解压**:首先,你需要从可靠的源下载YUI Compressor的压缩包,并将其解压到本地计算机上的某个目录。 2. **安装**:找到解压后的文件夹,双击运行"install.cmd"。这个批处理脚本会修改系统注册表,将YUI...

    IntelliJIDEA_ReferenceCard_Mac.pdf

    - 查看文件中使用:用于查找在当前文件中某个类、方法或变量的使用情况。 2. 编译和运行: - Make Project(编译修改和依赖):编译项目中修改过的文件和它们的依赖。 - 编译选定的文件/包/模块:仅编译选中的...

Global site tag (gtag.js) - Google Analytics