Java 统计代码的小工具
来源:未知 责任编辑:智问网络 发表时间:2013-11-04 19:49 点击:次
统计代码的小工具,程序功能不是很完善,欢迎大家多给意见
- 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("*/"))
- {
- flag = false;
- }
- }
- else
- {
- codeLines++;
- }
- }
- //将结果保存到output
- output+=("代码行数:" + codeLines+"\n"+"注释行数:" + commentLines+"\n"
- +"空白行数: " + blankLines+"\n"+"总行数:" + (codeLines+commentLines+blankLines));
- //将统计的结果在txa里面显示
- txa.setText(output);
- }
- catch (FileNotFoundException ex)
- {
- ex.printStackTrace();
- }
- catch (IOException ex)
- {
- ex.printStackTrace();
- }
- finally
- {
- if (br != null)
- {
- try {
- br.close();
- br = null;
- }
- catch (IOException ex)
- {
- ex.printStackTrace();
- }
- }
- }
- }
- }
- });
- }
- //Frame主程序
- public static void main(String[] args)
- {
- try {
- UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); //windows界面风格
- } catch (Exception e) {
- e.printStackTrace();
- }
- CodeCounterFrame frame = new CodeCounterFrame();
- frame.setTitle("统计代码的小工具");
- frame.setSize(300,200);
- frame.setVisible(true);
- frame.setLocationRelativeTo(null);//窗体居中显示
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- }
运行的窗口:
输出的结果:
本文出自 “IT的点点滴滴” 博客,请务必保留此出处http://liangruijun.blog.51cto.com/3061169/624394
相关新闻>>
- 发表评论
-
- 最新评论 更多>>