📄 codelinescount.java
字号:
package shuzhiguanxi;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.filechooser.FileNameExtensionFilter;
public class CodeLinesCount implements ActionListener {
JButton bt_daoru = new JButton("导入要统计的文件");
JButton bt_qingling;
JLabel lb_count = new JLabel("您导入的文件代码量为:");
JTextArea are_show=new JTextArea();
static int count,countzhusi,countjava;
JFrame jf;
static boolean haveornot;
int onejavacount=0;
int onejavazhusi=0;
JScrollPane jsp=new JScrollPane(are_show);
JProgressBar jpb=new JProgressBar();
long length,lengthup;
public CodeLinesCount() {
jf = new JFrame("代码统计");
Container cp=jf.getContentPane();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLayout(new BoxLayout(cp,BoxLayout.Y_AXIS));
bt_daoru.addActionListener(this);
bt_qingling = new JButton("清零");
bt_qingling.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
countjava=count=countzhusi=0;are_show.setText("");
jpb.setValue(0);
lb_count.setText("您要查看的信息清除");
}
});
jf.add(bt_daoru);
jf.add(lb_count);
jf.add(bt_qingling);
jf.add(jpb);
jf.add(jsp);
jpb.setVisible(false);
jpb.setStringPainted(true);
jf.setSize(477, 333);
jf.setLocation(222, 222);
jf.setVisible(true);
}
public static void main(String agr[]) {
new CodeLinesCount();
}
public void actionPerformed(ActionEvent arg0) {
Thread th=new Thread(new Runnable(){
public void run(){
bt_daoru.setEnabled(false);
bt_qingling.setEnabled(false);
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(".java",
"java");
chooser.setFileFilter(filter);
chooser.setMultiSelectionEnabled(true);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
chooser.setCurrentDirectory(new File(
"E:\\"));
int returnVal = chooser.showOpenDialog(jf);
if (returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: "
+ chooser.getSelectedFile().getPath());
File[] filelist = chooser.getSelectedFiles();
for(int i=0;i<filelist.length;i++){
filelength(filelist[i]);
}
System.out.println("大小"+length);
jpb.setMaximum((int)(length/1000));
try {
jpb.setVisible(true);
for (int i = 0; i < filelist.length; i++) {
System.out.println(filelist[i]);
Directory(filelist[i]);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
bt_daoru.setEnabled(true);
bt_qingling.setEnabled(true);
if(!haveornot)lb_count.setText("没有发现任何JAVA文件,请更改路径");
haveornot=false;
System.out.println("总共"+length+"最后"+lengthup);
length=lengthup=0;
}
}
}
});
th.start();
}
void filelength(File filelist){//递归求目录下全部文件大小
if (filelist.isDirectory()) {// 处理选择目录
File[] directoryfile = filelist.listFiles();
for (int j = 0; j < directoryfile.length; j++) {
filelength(directoryfile[j]);//递归
}
}
else{//文件
length=length+filelist.length();
}
}
void Directory(final File filelist) throws IOException {
RandomAccessFile javafile;
String codeline;
boolean zhusi = false;
if (filelist.isDirectory()) {// 处理选择目录
File[] directoryfile = filelist.listFiles();
for (int j = 0; j < directoryfile.length; j++) {
Directory(directoryfile[j]);
}
} else{
lengthup=lengthup+filelist.length();
jpb.setValue((int)(lengthup/1000));
if (filelist.getName().endsWith(".java")) { // 处理选择文件
javafile = new RandomAccessFile(filelist, "r");/* System.out.
fdsasd
fdsaasdf
println(filelist);*/
countjava++;
haveornot=true;
onejavacount=0;
onejavazhusi=0;
while ((codeline = javafile.readLine()) != null) {
codeline = codeline.trim();
if (codeline.equals("")) {
continue;
}
if (codeline.startsWith("//")) {
countzhusi++;onejavazhusi++;
continue;
}
if (codeline.startsWith("/*")) {
countzhusi++;onejavazhusi++;
zhusi = true;
if (codeline.endsWith("*/")) {
zhusi = false;
}
continue;
}
if (zhusi) {
if (codeline.endsWith("*/")) {
zhusi = false;
}
countzhusi++;onejavazhusi++;
continue;
}
count++;onejavacount++;
}
are_show.append(countjava+" 代码量:"+onejavacount+"注释量:"+onejavazhusi+" "+filelist.toString()+"\n");
lb_count.setText("您导入的目录下共有:"+countjava+"个JAVA文件"+" 代码量为:" + count + "行 注释量为:" + countzhusi+"行");
jsp.getVerticalScrollBar().setValue(jsp.getVerticalScrollBar().getMaximum());
}}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -