文件统计器

 

基本对文件的基本操作,编写了一个简单的文件统计程序

 

1.界面

 

package fileCount;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

/**
 * 文件的统计登陆界面
 * 
 * @author lenovo
 * 
 */
public class FileCountUI extends JFrame {

	public static void main(String args[]) {

		// 创建FileCopy对象
		FileCountUI fc = new FileCountUI();

		fc.showUI();

	}

	/**
	 * 初始化窗口
	 */
	public void showUI() {

		// 设置标题
		this.setTitle("文件统计器  v1.0");
		// 设置窗体大小
		this.setSize(600, 350);

		// 创建流式布局器
		java.awt.FlowLayout fl = new java.awt.FlowLayout();
		this.setLayout(fl);

		// 创建一个面板对象
		JPanel jp = new JPanel();
		// 创建一个尺寸对象
		java.awt.Dimension di = new java.awt.Dimension(392, 66);
		// 设置面板的大小
		jp.setPreferredSize(di);
		// 创建并给面板加上流式布局器
		java.awt.FlowLayout fl1 = new java.awt.FlowLayout();
		jp.setLayout(fl1);

		// 创建一个标签,创建一个文本框,一个按钮
		JLabel jl1 = new JLabel("文件夹路径:");
		final JTextField jt1 = new JTextField(20);

		JButton jb = new JButton("开始统计");

		// 将标签,文本行,按钮加到面板上去
		jp.add(jl1);
		jp.add(jt1);
		jp.add(jb);

		// 把面板加到窗体
		this.add(jp);

		// 创建一个多行文本框
		final JTextArea jta = new JTextArea(13, 50);
		this.add(jta);
		// 创建一个滚动条
		JScrollPane jsp = new JScrollPane(jta);
		
		this.add(jsp);

		// 窗体大小不可改变
		this.setResizable(false);
		// 关闭时退出
		this.setDefaultCloseOperation(3);
		// 将窗体显示出来
		this.setVisible(true);

		// 给开始复制按钮安装动作监听器
		jb.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {

				// 得到源文件路径
				String str1 = jt1.getText();

				// 创建一个FileCopy对象
				FileCount fc = new FileCount();
				// 调用对象方法
				int file = fc.countfile(str1);
				int fileroot = fc.countfileroot(str1);
				float space = fc.countspace(str1);
				
				//写入到多行文本框
				jta.append("*******************************开始统计*******************************\n");

				// 得到一个迭代器对象
				java.util.Iterator<String> ite = fc.getArrayList().iterator();
				while (ite.hasNext()) {
					//将路径数组写入到多行文本框
					jta.append(ite.next()+"\n");
				}

				//写入到多行文本框
				jta.append("统计完毕!!!总找到" + file + "个文件    " + fileroot + "个文件夹    "
						+ space / 1024 + "KB(" + space / 1024 / 1024 + "MB,"+space / 1024 / 1024/1024+"GB)");

			}
		});

	}

}

 

 

 

2.统计的方法

 

package fileCount;

/**
 * 统计给定路径下文件的个数,文件夹的个数,文件夹的总大小
 * 
 * @author lenovo
 * 
 */
public class FileCount {

	//创建一个字符串队列,用来装入问价的路径
	private java.util.ArrayList<String> sal=new java.util.ArrayList<String>();	
	
	
	/**
	 * 统计文件的个数
	 * 
	 * @param path
	 *            :路径
	 * @return:文件的个数
	 */
	public int countfile(String path) {
		// 计数器
		int count = 0;

		// 根据路径创建文件
		java.io.File file = new java.io.File(path);
		// 判断文件是否存在
		if (!file.exists()) {
			sal.add("给定的路径不存在!");
			return 0;
		}

		// 存在的话就装入数组
		java.io.File[] fa = file.listFiles();
		if (fa == null) {
			return 0;
		}

		// 遍历数组
		for (int i = 0; i < fa.length; i++) {
			// 得到fa[i]的绝对路径
			String s = fa[i].getAbsolutePath();
			// 如果找到的是文件
			if (fa[i].isFile()) {
				count++;
				sal.add("找到一个文件其路径为:"+s);

				// 如果找到的是文件夹
			} else if (fa[i].isDirectory()) {
				// 递归
				count += countfile(s);
			}
		}

		return count;
	}

	/**
	 * 统计文件夹的个数
	 * 
	 * @param path
	 *            :给出的路径
	 * @return:文件夹的个数
	 */
	public int countfileroot(String path) {
		// 计数器
		int count = 0;

		// 根据路径创建文件
		java.io.File file = new java.io.File(path);
		// 判断文件是否存在
		if (!file.exists()) {
			return 0;
		}

		// 存在的话就装入数组
		java.io.File[] fa = file.listFiles();
		if (fa == null) {
			return 0;
		}

		// 遍历数组
		for (int i = 0; i < fa.length; i++) {
			// 得到fa[i]的绝对路径
			String s = fa[i].getAbsolutePath();

			// 如果找到的是文件夹
			if (fa[i].isDirectory()) {
				count++;
				count += countfileroot(s);
			}
		}

		return count;
	}

	/**
	 * 统计文件夹的大小
	 * 
	 * @param path
	 *            :给定的路径
	 * @return:文件夹的大小
	 */
	public long countspace(String path) {
		// 计数器
		long space = 0;

		// 根据路径创建文件
		java.io.File file = new java.io.File(path);

		// 判断是否存在
		if (!file.exists()) {
			return 0;
		}

		// 如果存在,将文件装入数组
		java.io.File[] fa = file.listFiles();
		if (fa == null) {
			return 0;
		}

		for (int i = 0; i < fa.length; i++) {
			// 得到fa[i]的据对路径
			String s = fa[i].getAbsolutePath();

			// 如果是真实文件
			if (fa[i].isFile()) {
				space += fa[i].length();

			}
			// 如果是文件夹
			else if (fa[i].isDirectory()) {
				space += countspace(s);
			}
		}

		return space;
	}
	
	
	/**
	 * 得到路径队列
	 * @return:路径队列
	 */
	public java.util.ArrayList<String> getArrayList(){
		
		       
		return sal;
	}

}
 

 

 

3.界面效果图:


文件统计器

 

你可能感兴趣的:(java,swing)