基本对文件的基本操作,编写了一个简单的文件统计程序
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.界面效果图: