⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codelinescount.java

📁 java小程序,计算文件夹中总的java 文件代码行数
💻 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 + -