?? 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 + -