Java统计代码的小工具(一)

2014-11-24 01:40:10 · 作者: · 浏览: 2

统计代码的小工具,程序功能不是很完善,欢迎大家多给意见

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.UIManager;

public class CodeCounterFrame extends JFrame

{

JMenuBar menuBar = new JMenuBar();

JMenu fileMenu = new JMenu("文件");

JMenuItem openMenuItem = new JMenuItem("打开");

JTextArea txa = new JTextArea();

JScrollPane jsp =new JScrollPane(txa);

String output = "";

static long codeLines = 0;

static long commentLines = 0;

static long blankLines = 0;

public CodeCounterFrame()

{

this.setJMenuBar(menuBar);

menuBar.add(fileMenu);

fileMenu.add(openMenuItem);

txa.setEditable(false); //txa里面的内容不能被编辑

add(jsp);

//内部匿名类监听器

openMenuItem.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

if(e.getSource() == openMenuItem)

{

//点击了打开菜单

//弹出文件选择器

JFileChooser chooser = new JFileChooser();

chooser.showOpenDialog(null);

//获取选中的文件

File selectedFile = chooser.getSelectedFile();

BufferedReader br = null;

boolean flag = false;

try {

FileReader reader = new FileReader(selectedFile);//读取文档的内容

br = new BufferedReader(reader);

String line = "";

//2读文件

while ((line = br.readLine()) != null)

{

line = line.trim(); // 除去注释前的空格

if (line.matches("^[ ]*$"))

{

// 匹配空行

blankLines++;

}

else if (line.startsWith("//"))

{

commentLines++;

}

else if (line.startsWith("/*") && !line.endsWith("*/"))

{

commentLines++;

flag = true;

}

else if (line.startsWith("/*") && line.endsWith("*/"))

{

commentLines++;

}

else if (flag == true)

{

commentLines++;

if (line.endsWith("*/"))