`

Java中的文件读取与保存 之 统计文件夹及文件个数

    博客分类:
  • Java
 
阅读更多

使用递归来一层一层统计文件夹下的文件(夹)个数,大小,以及是否隐藏.

 

使用到的类:File

 

统计的方法

FileUnit.java

import java.io.File;

public class FileUnit {
	static int filecount=0;
	static int menucount=0;
	static int size=0;
	static long time=0;
	
	/**
	 * 统计指定路径下的标准文件的个数
	 * @param path 路径
	 * @return
	 */
	public static void CountFile(String Path){
		File file=new File(Path);
		
		
		if(!file.exists()){
			System.out.println("不存在");
			return ;
		}
		
		
		File []fs=file.listFiles();//返回当前路径下的所有文件。
		if (fs==null){
			//file不是一个文件夹,是一个文件
			size=(int) file.length();
			time = file.lastModified();
			filecount=1;

			System.out.println(file.getAbsolutePath()+"最后修改时间为 "+time );
			return ;
		}
		
		//运行到这里说明Path路径是一个文件夹
		for(int i=0;i<fs.length;i++){
			File f=fs[i];
			if(f.isFile()){
				filecount++;
				size += (int) f.length();
				time = file.lastModified();

				
				//将所有文件设为只读
				//f.setReadOnly();
			}else if(f.isDirectory()){
				//调用本身
				menucount++;
				System.out.println(f.getAbsolutePath());
				CountFile(f.getAbsolutePath());

			}			
		}		
	}

}

 

 

 

窗口:

UI.java

 

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

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class UI extends JFrame implements ActionListener{
	JLabel jInclude=new JLabel("包含:\t0个文件,0个文件夹");
	JLabel jclass=new JLabel("类型:\t文件");
	JLabel jSize=new JLabel("大小:\t0KB(0字节)");
	JLabel jTime=new JLabel("修改时间:\t2014年5月21日,18:36:01");//未实现
	JLabel jPath=new JLabel("位置:\t");
	JLabel jProperties=new JLabel("属性:       隐藏? ");
	JButton choose = new JButton("选择");
	FileUnit f1=new FileUnit();
	JFileChooser jfc = new JFileChooser("E:\\");
	static char hidden='否';
	
	public static void main(String[] args) {
		
		UI ui=new UI();
//		String s="E:\\hb\\Test";
//		f1.CountFile(s);
		ui.init();
		ui.initWighet();
		ui.setVisible(true);
		
		}
	
	public void init(){
		this.setSize(300,500);
		this.setDefaultCloseOperation(3);
		this.setTitle("文件统计器");
		this.setLayout(null);
	}
	
	public void initWighet(){
		
		jclass.setBounds(20, 20, 200, 20);
		jPath.setBounds(20, 50, 200, 20);
		jSize.setBounds(20, 80, 200, 20);
		jInclude.setBounds(20, 110, 200, 20);
		jTime.setBounds(20, 140, 300, 20);
		jProperties.setBounds(20, 180, 200, 40);
		choose.setBounds(20, 300, 100, 40);
		choose.addActionListener(this);
		
		this.add(jclass);
		this.add(jPath);
		this.add(jSize);
		this.add(jInclude);
		this.add(jTime);
		this.add(jProperties);
		this.add(choose);
	}
	
	public void Test(String s){
		
		
		File f =new File(s);
		f1.CountFile(s);
		if(f.isHidden()){
			hidden='是';
		}else{
			hidden='否';
		}
		jPath.setText(s);
		jSize.setText("大小:\t"+FileUnit.size/1024+"KB("+FileUnit.size+"字节)");
		jProperties.setText("属性:       隐藏? "+hidden);
		jInclude.setText("包含:\t"+FileUnit.filecount+"个文件,"+FileUnit.menucount+"个文件夹");
		if(FileUnit.menucount>0){
			jclass.setText("类型:\t文件夹");
		}
		
	}

	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		if(source.equals(choose)){
			int state = jfc.showOpenDialog(this);
			if (state == 0) {// 点击了打开按钮
				String str=jfc.getSelectedFile().getAbsolutePath();
				System.out.println(str);
				Test(str);//JFileChooser只能选择文件不能选择文件夹.
			}
			
		}
		
		
	}
}

 

 

 

 

遇到的问题:

1.最后一次修改的时间用file.lastModified();返回一个long.不知道怎么换成时间的格式

2.用JFileChooser无法选择文件夹.如果在程序中定义路径可以统计文件夹个数以及文件总大小.

1
0
分享到:
评论
1 楼 迷失1118 2014-05-27  
不错不错。。。。就是要找到自己不知道的问题。。。。下次上课记得问老师哟

相关推荐

    统计文件夹下文件行数

    在IT领域,统计文件夹下特定类型文件的行数是一项常见的任务,特别是在代码管理、日志分析和数据处理中。这个任务可以通过编程实现,通常使用脚本语言如Python或批处理脚本来自动化执行。以下是对这个主题的详细阐述...

    通过MATLAB读取心电数据。hea-dat-art文件并显示在matlab上面.zip

    7. **保存结果**:处理和分析完成后,可能需要将结果保存为文本、图像或MAT文件,以便后续使用或与其他软件交换。 请注意,实际的`rddata.m`脚本可能会更复杂,包括错误处理、用户界面交互等功能。理解并能灵活运用...

    JAVA 遍历图片文件夹的 Java 图形界面

    这段代码的核心功能是遍历指定路径下的所有文件夹及文件,并统计文件夹和文件的数量。 #### 实现原理 通过递归的方法实现文件夹的遍历,对于每一个文件或文件夹: - 如果是文件夹,则继续递归遍历; - 如果是文件,...

    httpClient 调用远程接口 获取数据到本地文件夹

    在这个场景中,我们使用HttpClient来调用远程接口,从电信公司的网站获取可用的新手机号码信息,并将这些数据存储到本地文件中。以下是对这个过程的详细解释: 1. **HttpClient的基本使用**: HttpClient提供了一...

    java代码统计工具及完整代码参考.pdf

    同时,它还提供了一个模拟打印的功能,通过屏幕截图来保存统计信息。用户可以选择保存这个屏幕截图,以便后续查看或记录。 2. 默认打印:如果用户不选择任何文件或文件夹,程序将使用预设的默认目录进行统计,并...

    JAVA上百实例源码以及开源项目源代码

    28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程...

    java教程 答案 耿祥义

    7. 文件管理和项目组织:文档强调了在公共分区中建立自己的文件夹来管理程序的重要性,并且建议不要将程序保存在系统盘(如C盘)上。这体现了良好的项目管理习惯,有助于避免系统文件被意外覆盖或修改,也便于程序的...

    pdf提取页数1.2.zip

    标题中的"pdf提取页数1.2.zip"表明这是一个关于PDF文档处理的工具,主要用于从PDF文件中批量提取特定页码。这个工具可能是为那些需要高效管理大量PDF文档,但不具备编程技能的用户设计的。从描述中我们可以理解,这...

    java课程设计报告-学生考勤系统的设计和实现

    - 使用Apache POI库读取Excel文件中的数据,POI是一个强大的Java库,可以用来处理各种格式的Office文档。 - 对每行数据进行解析,提取姓名和出勤记录。 - **数据处理**: - 遍历所有记录,更新每位学生的出勤和...

    java实现的中文词性标注算法

    模型文件可能存储在项目的资源文件夹中,通过Java的I/O流读取并加载到内存。 3. **特征提取**:根据选定的模型,将分词后的词语转换成模型所需的一系列特征。特征可能包括词语本身、上下文词语、词序等。 4. **...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

    java课程设计报告-学生考勤系统的设计和实现.pdf

    7. 文件操作:在保存统计结果到文本文件时,使用了`JFileChooser`类来让用户选择保存的位置和文件名,这是Swing库提供的文件选择对话框。 8. 排序算法:`Arrays.sort()`方法内部可能使用了快速排序、归并排序等高效...

    分析文件目录,统计数据并以树形结构和图表的形式展示结果,也可以导出多种格式留存.zip

    【标题】中的“分析文件目录,统计数据并以树形结构和图表的形式展示结果,也可以导出多种格式留存”这部分描述,涉及到的是文件管理和数据分析的知识点。在计算机科学中,这通常指的是文件系统的操作、数据统计分析...

    JAVA 范例大全 光盘 资源

    实例3 在Eclipse中创建第一个Java程序 4 常见问题 javac不是内部或者外部命令 6 常见问题 找不到类文件 6 常见问题 语法错误 7 第2章 Java基础语法 9 实例4 变量和常量 9 实例5 基本数据类型转换 10 实例6 ...

    java 哈夫曼压缩算法的分析与实现[源码][附图]

    `src`文件夹很可能是包含这些Java源代码的目录,其中可能有用于处理字符频率、构建哈夫曼树、生成编码以及读写文件的相关类。通过阅读和理解这些源代码,你可以更深入地了解哈夫曼压缩的实现细节。 哈夫曼压缩算法...

    遍历文件方法

    遍历文件通常指的是程序或脚本按照一定的规则访问指定目录及其子目录中的所有文件,以执行特定的任务,如读取、复制、删除或统计。在这个场景中,我们将深入探讨如何在Windows操作系统中使用命令行工具进行文件遍历...

Global site tag (gtag.js) - Google Analytics