- 浏览: 515403 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
devon.k:
推荐的一种解决方案:https://developer.jbo ...
JBoss应用遇到问题记录 -
liuzl121:
楼主你好,我遇到了你说的第一个问题,能不能详细一些?
JBoss应用遇到问题记录 -
showzh:
...
MySQL5.1列类型 -
zijie110:
...
使用SpringSide的PropertyFilter无法实现 where 属性名1 like '%值1%' or 属性名1 like '%值2%' 的效果 -
JAVA-JVM:
您好,我看了您的一篇文章“用Maven构建Flex4项目实践记 ...
用Maven构建Flex4项目实践记录
-----------------------------------------------------------------------
转自: http://fanyang219.iteye.com/blog/186968
-----------------------------------------------------------------------
package linenum; import java.awt.*; import java.awt.event.*; import java.io.*; import java.text.*; import javax.swing.*; public class LineNum extends JFrame { private JPanel topPanel = new JPanel(); private JPanel bottomPanel = new JPanel(); private JButton fileChoose = new JButton("选择目录"); private JTextField fileField = new JTextField(20); private JFileChooser fc = new JFileChooser("选择目录"); private JTextArea filePathArea = new JTextArea(5, 20); // 判断是否属于"/* */注释" private boolean isExplainStatus = false; // 存储代码总行数值 private int totalCount = 0; // 存储注释总行数值 private int explainCount = 0; // 存储空行总行数值 private int spaceCount = 0; // 存储单个文件行数值 private int count = 0; private InputStream input = null; private BufferedReader br = null; private String totalPath = ""; private DecimalFormat myFormat = null; public LineNum(String title) { super(title); // 设置面板 Container container = getContentPane(); container.setLayout(new BorderLayout()); topPanel.setLayout(new GridLayout(1, 2)); bottomPanel.setLayout(new BorderLayout()); topPanel.add(fileChoose); topPanel.add(fileField); bottomPanel.add(new JScrollPane(filePathArea)); filePathArea.setText("java文件:"); container.add(topPanel, BorderLayout.NORTH); container.add(bottomPanel, BorderLayout.CENTER); // 添加选择目录监听,默认获取的是选择文件所在的父目录,程序统计对象是此父目录及其子目录下的所有java文件 fileChoose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int result = fc.showOpenDialog(LineNum.this); if (result == JFileChooser.APPROVE_OPTION) { String path = fc.getSelectedFile().getAbsolutePath(); path = path.substring(0, path.lastIndexOf("\\")); fileField.setText(path); File file = new File(path); CalculateLineNum(file); } } }); } /* * 计算并显示统计信息 */ private void CalculateLineNum(File file) { if (file.exists()) { displayLineNum(file); myFormat = (DecimalFormat) NumberFormat.getPercentInstance(); myFormat.applyPattern("0.00%"); if (totalCount != 0) { double programPercent = (double) (totalCount - explainCount - spaceCount) / (double) totalCount; double explainPercent = (double) explainCount / (double) totalCount; double spacePercent = (double) spaceCount / (double) totalCount; filePathArea.setText(filePathArea.getText() + "\n" + " 总行数:" + totalCount + "行"); filePathArea.setText(filePathArea.getText() + "\n" + " 程序行数:" + (totalCount - explainCount - spaceCount) + "行,百分比:" + myFormat.format(programPercent)); filePathArea.setText(filePathArea.getText() + "\n" + " 注释行数:" + explainCount + "行,百分比:" + myFormat.format(explainPercent)); filePathArea .setText(filePathArea.getText() + "\n" + " 空行行数:" + spaceCount + "行,百分比:" + myFormat.format(spacePercent)); } else { filePathArea.setText(filePathArea.getText() + "\n" + " 总行数:" + totalCount + "行"); } } } // 循环访问目录及子目录,统计代码总行数,注释行数及空行行数 public void displayLineNum(File file) { totalPath += " || " + file.getName(); String[] subPaths = file.list(); if (subPaths.length == 0) { totalPath = totalPath.substring(0, totalPath .lastIndexOf(" || ")); return; } // 循环对子目录进行访问计算行数处理 for (int i = 0; i < subPaths.length; i++) { count = 0; File subFile = new File(file.getAbsolutePath() + "\\" + subPaths[i]); if (subFile.isFile()) { String subFilePath = subFile.getAbsolutePath(); String extendName = subFilePath.substring(subFilePath .lastIndexOf(".") + 1, subFilePath.length()); if (!extendName.equals("java")) { continue; } try { input = new FileInputStream(subFile); BufferedReader br = new BufferedReader( new InputStreamReader(input)); String lineValue = br.readLine(); while (lineValue != null) { count++; // 对两种不同类型注释分别处理,对空行用空字符串来判断 if (isExplainStatus == false) { if (lineValue.trim().startsWith("//")) { explainCount++; } if (lineValue.trim().equals("")) { spaceCount++; } if (lineValue.trim().startsWith("/*")) { explainCount++; isExplainStatus = true; } } else { explainCount++; if (lineValue.trim().startsWith("*/")) { isExplainStatus = false; } } lineValue = br.readLine(); } totalCount += count; String totalPath1 = totalPath + " || " + subFile.getName(); // 显示单个文件的行数 filePathArea.setText(filePathArea.getText() + "\n" + totalPath1 + " 行数:" + count + "行--------totalCount:" + totalCount); br.close(); input.close(); } catch (Exception e) { e.printStackTrace(); } } else { // 循环调用displayLineNum函数,实现统计子目录行数数据 displayLineNum(subFile); } } totalPath = totalPath.substring(0, totalPath.lastIndexOf(" || ")); } public static void main(String args[]) { LineNum lineFrame = new LineNum("java程序行数统计"); lineFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); lineFrame.setBounds(212, 159, 600, 420); lineFrame.setVisible(true); lineFrame.setResizable(false); } }
发表评论
-
JVM记要
2020-03-13 22:06 4JVM架构 图略(iteye已废) ... -
JUC(java.util.concurrent)要点笔记
2020-03-02 11:40 1127iteye没落了,编辑格式太难整,表格位置有问题,图片 ... -
JMH记要
2020-01-16 11:46 6481.What's JMH?——OpenJDK提供的微基准测 ... -
Windows下多个jdk共存问题
2016-08-26 13:52 1187现象: 共安装有jdk1.6、1.7、1.8这3个版本, ... -
国际化
2015-01-06 16:50 952语言代码标准 国家代码标准 Java: pu ... -
LTW(Loading-Time Weaving)应用实践要点记录
2013-05-09 17:50 0http://static.springsource.org ... -
Java常用命令(工具)
2013-03-21 16:04 2110启动参数加上-XX:+HeapDumpOnOutOfMemor ... -
Java基础修炼
2012-12-13 19:00 1094Java标准与规范 Java ... -
Java并发编程持续学习
2012-07-04 17:31 1394一. 概念与基础 book: 《Java并发编程实践》 ... -
Openfire和Spark本地开发环境搭建记要
2012-05-16 22:41 111611. Openfire 参考:openfire搭建 ... -
Java基础恶补——Development
2012-02-18 19:26 1064[SCJP Sun Certified Programmer ... -
Java基础恶补——线程
2012-02-11 23:19 927[SCJP Sun Certified Programmer ... -
Java基础恶补——内部类
2012-02-04 19:35 1189[SCJP Sun Certified Programmer ... -
Java基础恶补——泛型和集合
2012-02-01 18:17 3176[SCJP Sun Certified Programmer ... -
Java基础恶补——Strings, I/O, Formatting, and Parsing
2012-01-29 15:51 1243[SCJP Sun Certified Programmer ... -
Java基础恶补——控制流、异常、断言
2011-11-30 19:02 2100[SCJP Sun Certified Programmer ... -
Java基础恶补——Operators
2011-11-24 16:00 1204[SCJP Sun Certified Programmer ... -
Java基础恶补——Assignments
2011-11-23 14:42 1198[SCJP Sun Certified Programmer ... -
Java基础恶补——OO
2011-11-17 13:30 1186[SCJP Sun Certified Programmer ... -
Java基础恶补——声明及访问控制
2011-11-07 15:54 1188[SCJP Sun Certified Programmer ...
相关推荐
python统计指定目录内文件的代码行数,程序实现统计指定目录内各个python文件的代码总行数,注释行数,空行数,并算出所占百分比 这符合一些公司的小需求,实际代码量的统计工作 效果如图 代码如下: #coding:...
《iOS游戏应用源代码分析——cammsaul-NAMenu-d4974a0》 在iOS开发领域,源代码是理解应用运行机制的关键。"cammsaul-NAMenu-d4974a0.zip"这个压缩包包含了iOS游戏应用"cammsaul-NAMenu"的源代码,为开发者提供了一...
《iOS游戏应用源代码分析——waldo-ScoreFiveHundred》 在iOS开发领域,源代码是理解应用程序工作原理和学习技术的关键。本篇将详细探讨"waldo-ScoreFiveHundred-1.2-0-ge02ca4c.zip"这个压缩包中的iOS游戏应用源...
《深入剖析H.264编码技术:以x264源代码为例》 H.264,全称为Advanced Video Coding(高级视频编码),是国际电信联盟(ITU-T)和国际标准化组织(ISO)联合制定的一套视频编码标准,其在数字视频编码领域具有深远...
【iOS游戏应用源代码——lolohouse-TextStepperField-a98518f.zip】这个压缩包文件主要涉及的是iOS开发中的一个特定组件——TextStepperField,这是一个自定义UI控件,用于增强标准的UITextField功能,使得用户可以...
《阿里巴巴 Java 编码指南》是业界广泛采用的编码规范,旨在提高代码质量和开发效率,尤其对于使用 IntelliJ IDEA 的开发者来说,此指南的兼容性更新至 2023.3+ 版本,确保了最新的开发环境支持。这份指南在 2024 年...
现在网上很多是idea怎么安装Alibaba Java Coding Guidelines插件,myecplise的讲解少之又少而且还不好用,我找了半天终于找到了Alibaba Java Coding Guidelines插件的离线安装包,已经亲测没问题,就跟svn一样用link...
《iOS游戏应用源代码解析——jasarien-JSTokenField-1.0-17-gc712902》 iOS游戏开发是移动应用领域的一个重要分支,其复杂性和创新性吸引了无数开发者投身其中。jasarien-JSTokenField-1.0-17-gc712902.zip是一个...
首先,我们来看看项目的核心组件——代码编辑器。在iPad上构建一个高效且功能完备的代码编辑器并非易事,因为它需要处理多点触控输入、语法高亮、代码自动完成、括号匹配等功能。这通常涉及到对TextKit或CoreText...
JAVA社区网络服务系统(源代码+毕业设计文章)JAVA社区网络服务系统(源代码+毕业设计文章)JAVA社区网络服务系统(源代码+毕业设计文章)JAVA社区网络服务系统(源代码+毕业设计文章)JAVA社区网络服务系统(源代码+毕业...
这个源代码包涵盖了设计、编码和打包基于Eclipse RCP的Java应用的关键知识点,对于深入理解Eclipse RCP的工作原理和开发流程极具价值。 1. **Eclipse RCP介绍**:Eclipse RCP 是一个开放源码的开发平台,它提供了...
基于Java的在线购物系统的设计与实现(源代码+系统+WORD论文) Java代码实现的在线购物系统的设计与实现(源代码+系统+WORD论文) Java代码实现的在线购物系统的设计与实现(源代码+系统+WORD论文) Java代码实现的...
总结来说,Alibaba Java Coding Guidelines IDEA插件是提升Java开发效率和代码质量的得力助手。它通过集成编码规范,让开发者在编码过程中就能实现错误预防,促进了代码的标准化,从而提高了团队协作的效率。无论你...
Alibaba_Java_Coding_Guidelines-2.1.1 是阿里巴巴集团发布的Java编程规范的一个版本。这个规范旨在统一阿里巴巴集团内部Java开发者的编码习惯,提升代码的可读性、可维护性和性能。 该规范通常包含多个方面,如...
Java游戏设计打飞机程序(源代码+WORD论文) Java游戏设计打飞机程序(源代码+WORD论文) Java游戏设计打飞机程序(源代码+WORD论文) Java游戏设计打飞机程序(源代码+WORD论文) Java游戏设计打飞机程序(源代码+WORD论文) ...
《Game Coding Complete》是一本备受推崇的游戏开发指南,旨在帮助开发者深入理解...总的来说,《Game Coding Complete》的示例源代码是一个宝贵的资源,对于想要提升游戏编程技能的人来说,无疑是一份珍贵的学习资料。
总的来说,《Alibaba Java Coding Guidelines》2.0.2版提供了一个全面且实用的Java编程标准,它不仅有助于提升代码质量,也有助于培养良好的编程习惯。开发者可以将其集成到IDEA中,进行实时的代码检查,以达到规范...
《Swift编程:深入解析Coding iOS客户端源代码》 在移动应用开发领域,Swift语言以其简洁、安全和高效的特点,成为了iOS开发的首选工具。本文将深入探讨“Coding iOS客户端源代码”,通过分析这个完整的Swift项目,...
Alibaba Java Coding GuidelinesAlibaba Java Coding GuidelinesAlibaba Java Coding GuidelinesAlibaba Java Coding Guidelines
这个压缩包包含了一系列Java实现的数据结构源代码,旨在帮助开发者提升对数据结构的理解和实践能力。 1. **BST.java**:二叉搜索树(Binary Search Tree,BST)是一种自平衡的二叉树,其中每个节点的值都大于其左...