Код класса инструментов, получить общее количество строк всех файлов Java в текущем проекте, количество строк кода, количество комментариев и количество пустых строк
Кода -копия выглядит следующим образом:
Импорт java.io.bufferedReader;
Импорт java.io.file;
импортировать java.io.fileinputstream;
Импорт java.io.filenotFoundException;
Импорт java.io.filereader;
импортировать java.io.ioexception;
Импорт java.io.reader;
импортировать java.util.regex.matcher;
Импорт java.util.regex.pattern;
/**
*
* @author Administrator
*
*/
открытый класс JavaCode {
частная статическая конечная строка Project_dir = "c: // test";
private static int totle = 0; // Общее количество строк
Private Static Int Source = 0; // Количество строк кода
private static int blank = 0; // количество пустых линий
Private Static Int Comments = 0; // Количество комментариев
/**
* Читать файлы Java в папке
* @param dir
*/
private static void listnext (файл dir) {
File [] files = dir.listfiles ();
для (int i = 0; i <files.length; i ++) {
// Размещайте, является ли это папкой.
if (files [i] .isdirectory ()) {
ListNext (файлы [i]);
} еще {
пытаться {
if (files [i] .getName (). Endswith (". Java")) {
System.out.println (files [i] .getabSolutePath ());
Javaline (файлы [i]);
}
} catch (Exception e) {
e.printstacktrace ();
}
}
}
}
/**
* Прочитайте общее количество строк файла Java, количество строк кода, количество пустых строк, количество строк комментариев
* @param f
* @Throws ioException
* @Throws filenotFoundException
*/
Частная статическая void javaline (файл f) бросает filenotfoundexception, ioexception {
String strline = "";
String str = fromfile (f);
if (str.length ()> 0) {
while (str.indexof ('/n')! = -1) {
totle ++;
//System.out.println(totle);
strline = str.substring (0, str.indexof ('/n')). trim ();
// str = str.substring (str.indexof ('/n') + 1, str.length ());
if (strline.length () == 0) {
Blank ++;
} else if (strline.charat (0) == '*' || strline.charat (0) == '/') {
Комментарии ++;
}еще{
источник ++;
String regex = "^*//";
if (regex (strline, regex)) {
Комментарии ++;
}
}
str = str.substring (str.indexof ('/n') + 1, str.length ());
}
}
}
/**
* Прочтите файл Java как массив символов
* @param f
* @возвращаться
* @Throws filenotFoundException
* @Throws ioException
*/
Приватная статическая строка FromFile (файл f) выбрасывает filenotFoundException, ioException {
FileInputStream fis = new FileInputStream (f);
byte [] b = новый байт [(int) f.length ()];
fis.read (b);
fis.close ();
вернуть новую строку (b);
}
/**
* Обычный матч
* @param str event string
* @param regex регулярная соответствующая строка
* @возвращаться
*/
Частная статическая логическая режима (String Str, String Regex) {
Шаблон p = pattern.compile (regex);
Совпадение m = p.matcher (str);
логический результат = m.find ();
результат возврата;
}
public static void main (string [] args) бросает filenotfoundexception, ioexception {
// файл root = new File (project_dir);
File Directory = new File (""); // Параметр пуст
// Получить путь проекта
String ProjectFile = Directory.getCanonicalPath ();
System.out.println (ProjectFile+"======================================================= =======);
ListNext (новый файл (ProjectFile));
System.out.println (totle+1);
System.out.println (Source);
System.out.println (blank);
System.out.println (комментарии);
}
}