My Quotes


When U were born , you cried and the world rejoiced
Live U'r life in such a way that when you go
THE WORLD SHOULD CRY






Tuesday, April 13, 2010

Find files recursively and remove unwanted comments

I always wanted to scna whole folder and remove unwanted comments from my java codings. Here is a method which you can ready made use it to acheive this. I hope that this helps some one. Of course your javac task will remove comments from the class file but having a source file with clean code always makes an impression.


I have a string array of extensions so that this can be used for other types of files also.


If you make the variable boolean changeExt=true; then the file will be overwritten, else a new file will be created with an extension of file.java.changed





import org.apache.commons.io.FileUtils;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.PrintStream;

import java.util.regex.Matcher;
import java.util.regex.Pattern;


    private void findFilesandReplaceComment() {
        File rootDir = null;
        String[] extensions = { "java" };
        boolean recursive = true;
        String fileContent=null;
        Collection dirFiles = null;
        String encoding=null;
        Iterator fileIterator = null;
        String commentStr=null;
        FileOutputStream fout = null;
        File inputFile = null;
        PrintStream pout = null;
        boolean changeExt=true;
        String fileExt = null;
        try{
            encoding="UTF-8";
            rootDir=new File("some directory");
            commentStr = "(?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/)|(?://.*)";
            fileIterator = FileUtils.iterateFiles(rootDir, extensions, recursive);
            for(;fileIterator.hasNext();){
                inputFile = (File) fileIterator.next();
                fileContent=FileUtils.readFileToString(inputFile, encoding);
                // Open an output stream
                if(changeExt == true){
                    fileExt = inputFile.getName().substring(0,inputFile.getName().indexOf(".java"))+".changed";
                }else{
                    fileExt = "";
                }
                fout = new FileOutputStream(new File(inputFile.getAbsolutePath()+fileExt));
                pout = new PrintStream(fout);
                pout.println(fileContent.replaceAll(commentStr, ""));
                fout.flush();
                fout.close();
                pout.flush();
                pout.close();
            }
        }catch (Exception e) {
             e.printStackTrace();
        }finally{
            rootDir = null;
            fileContent=null;
            dirFiles = null;
            encoding=null;
            fileIterator = null;
            commentStr=null;
            fout = null;
            inputFile = null;
            pout = null;
            fileExt = null;
        }
    }

No comments :