`
qianjiangbing
  • 浏览: 91408 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

File类(目录遍历)

    博客分类:
  • java
阅读更多
   现在实现一个通过面板统计相应磁盘目录下对应扩展名的文件个数,比如我要实先找到C盘下exe文件的个数。
    大致思路是:先创建一个面板,面板上添加下拉框,供选择所需要查找的对象,添加一个搜索按钮,给按钮添加监听器。当点击按钮时,搜索到要找的文件统计其个数。
    看看下面的代码:


   package cn.netjava;

import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import javax.swing.*;

public class FileTest01{
private static final int SCROLLBARS_BOTH = 0;

Choice ch_1;
Choice ch_2;
TextArea ta;
//程序入口
public static void main(String[] args) throws Exception{
//实例化一个File对象
FileTest01 fl=new FileTest01();
fl.intiGui();
}
/**
* 打印的目录下文件名
* @param string
* @return 文件的个数
*/
public int printDir(String dirName,String type) {
//定义文件个数,赋值为0
int fileCount=0;
File dirFile=new File(dirName);
File[] subFile=dirFile.listFiles();//列表目录
if(null==subFile||subFile.length==0)
return 0;
//遍历子一级目录
for(int i=0;i<subFile.length;i++){
if(subFile[i].isDirectory()){
String subDir=subFile[i].getAbsolutePath();
//System.out.println("目录"+subDir);
//如果还是目录调用同样的方法计算,递归
fileCount+=printDir(subDir,type);
}
if(subFile[i].isFile()){
String fileName=subFile[i].getAbsolutePath();
if(istype(fileName,type)){
ta.append(fileName+"\n");
//System.out.println("文件:"+fileName);
fileCount++;}

}
}
return fileCount;
}

//判断文件的类型
private boolean istype(String fileName, String type) {

String tempType = "";
for(int i=fileName.length()-1;i>0;i--){
if(fileName.charAt(i)!='.'){
tempType = fileName.charAt(i) + tempType;
}
else break;
}
if(tempType.equals(type))
return true;
else
return false;
}

/**
* 初始化一个图形界面的方法
*/
private void intiGui() {
//创建一个窗体
JFrame jf=new JFrame();
//设置窗体的名字
jf.setTitle("统计文件");
//设置窗体的大小
jf.setSize(500, 350);
//设置关闭窗体时程序退出
jf.setDefaultCloseOperation(3);
//设置窗体显示在中央
jf.setLocationRelativeTo(null);
jf.getContentPane().setBackground(Color.red);
//创建一个北面面板
JPanel northpane=new JPanel();
//设置面板的大小
northpane.setPreferredSize(new Dimension(0,50));
northpane.setBackground(Color.green);
//将北面面板添加到窗体上
jf.add(BorderLayout.NORTH,northpane);
//实例化标签1
JLabel jl_1=new JLabel("路径");
northpane.add(jl_1);
//创建下拉列表框
ch_1=new Choice();
northpane.add(ch_1);
ch_1.add("E盘");
ch_1.add("C盘");
ch_1.add("F盘");
ch_1.add("G盘");
//实例化标签2
JLabel jl_2=new JLabel("文件名");
northpane.add(jl_2);
//实例化一个文本框
JTextField jtf=new JTextField("学习",8);
//将文本框加到northpane上
northpane.add(jtf);
//实例化标签3
JLabel jl_3=new JLabel("扩展名");
//将标签添加到northpane上
northpane.add(jl_3);
//实例化下拉框2
ch_2=new Choice();
ch_2.add("dmg");
ch_2.add("doc");
ch_2.add("exe");
ch_2.add("pdf");
northpane.add(ch_2);

//创建一个中间面板
JPanel centerpane=new JPanel();
//将中间面板添加到窗体上
jf.add(centerpane);
//新建一个多行文本框
ta = new TextArea("",15,60, SCROLLBARS_BOTH);
//将多行文本框添加到centerpane上
//ta.append("0000000000000000000"+'\n');
centerpane.add(ta);
//实例化一个按钮
JButton jb=new JButton("搜索");
northpane.add(jb);
//添加一个鼠标监听器
jb.addMouseListener(new MouseAdapter(){
//当鼠标点击时
public void mouseClicked(MouseEvent e) {
//对第一个下拉框判断要找的磁盘
String path=null;
String st1 = ch_1.getSelectedItem();
if(st1.equals("C盘")){
path = "C:";
}else if(st1.equals("E盘")){
path="E:";
}else if(st1.equals("F盘")){
path="F:";
}else if(st1.equals("G盘")){
path="G:";
}

//对第二个下拉框判断要找的文件类型
String type=null;
String st2 = ch_2.getSelectedItem();
if(st2.equals("pdf")){
type = "pdf";
}else if(st2.equals("dmg")){
type="dmg";
}else if(st2.equals("exe")){
type="exe";
}else if(st2.equals("doc")){
type="doc";
}
int count=printDir(path,type);;
System.out.println(path+"目录下共找到文件个数是:"+count);
}
});
jf.setVisible(true);
}
}

运行的结果如图。
  • 大小: 22.2 KB
0
2
分享到:
评论
3 楼 无心 2013-08-04  
加油!
2 楼 qianjiangbing 2013-08-04  
T hanks!
1 楼 alvin198761 2013-08-04  
写东西的人,总归是知道鼓励的,我提出两个简单的问题,其他我也没有细看

subFile 判断一下 == null就可以了
你判断了subFile.length,对后面的循环没啥影响,
然后就是盘符的问题,盘符是 File.listRoots()获得的,不是手动写死的,
------------------
别无它意,希望你能更进步

相关推荐

    图片的压缩截取和目录遍历.rar

    在Java中,使用File类的listFiles()和listDirs()方法;在Windows系统命令行,我们可以使用dir命令配合通配符进行遍历。目录遍历在文件管理和自动化脚本编写中十分常见。 综合上述信息,"图片的压缩截取和目录遍历....

    VB 编写的目录遍历程序

    在这个特定的案例中,"VB 编写的目录遍历程序"是一个利用VB技术实现的实用工具,能够遍历指定的文件系统目录,并将结果导出到Excel列表中,这对于文件管理和组织工作非常有帮助。 该程序的核心功能包括: 1. **...

    遍历目录树 遍历目录树 遍历目录树 遍历目录树

    通常,`Demo1`可能包含了一个完整的或部分的目录遍历实现,可以根据上面的解释进行扩展或调整。 总结来说,遍历目录树是通过递归和`&lt;filesystem&gt;`库来实现的。理解这一过程有助于在C++中处理复杂的文件系统任务。在...

    linux及win跟目录遍历文件和文件夹及子文件夹

    ### 一、目录遍历的基本概念 在计算机科学中,**目录遍历**(Directory Traversal)是指系统地访问一个目录及其所有子目录下的文件和子目录的过程。这个过程通常用于查找特定类型的文件、统计文件数量或者进行其他...

    Web应用攻击简解-目录遍历攻击

    ### Web应用攻击简解:目录遍历攻击 在网络安全领域,Web应用攻击是常见的威胁之一,其中目录遍历攻击(Directory Traversal Attack)尤为突出,它允许攻击者突破Web服务器的安全边界,访问或操纵受限的文件和目录...

    Python视频教程-目录遍历

    在Python编程语言中,目录遍历是一项基础但至关重要的技能,尤其对于文件系统操作和数据管理。本视频教程和配套文档旨在深入浅出地教授如何在Python中有效地遍历文件目录。 目录遍历的主要目标是访问和处理指定路径...

    Java使用File类遍历目录及文件实例代码

    本文将深入探讨如何使用`File`类遍历目录和文件,并提供实例代码供参考。 首先,`File`类有多个构造函数,用于创建表示文件或目录的对象。例如: 1. `File(String args0)` - 使用一个表示文件或目录路径的字符串...

    谷歌gitee插件,可以在github,gitee上显示左侧栏进行目录遍历

    6. **file-icons.js、octotree.js**:这两个JavaScript文件分别对应前面提到的CSS文件,可能用于实现文件类型的图标显示和核心的目录遍历功能。 7. **ondemand.js、keymaster.js**:`ondemand.js`可能是实现按需...

    AS3遍历文件夹

    通过File类,我们可以创建一个指向特定文件或目录的引用,然后进行各种操作,包括遍历文件夹。 要遍历文件夹,我们需要使用File的directoryContents属性和DirectoryEntry类。下面是一个简单的例子,展示了如何遍历...

    遍历文件夹自动生成目录树

    例如,在Python中,我们可以使用`os`和`os.path`模块,而在Java中则可以使用`java.io.File`类。 **Python示例** 在Python中,可以使用以下代码来遍历文件夹并打印目录树结构: ```python import os def list_...

    python文件操作之目录遍历实例分析

    这篇实例分析主要关注的是如何使用Python进行目录遍历,包括两种不同的方法:一是基于`os`模块的`listdir()`和`os.path`方法,二是利用`os.walk()`方法。下面我们将详细探讨这两种方法及其相关知识点。 1. `os....

    VC++ 遍历文件夹自动生成目录树 VC++ 遍历文件夹自动生成目录树

    在VC++编程中,遍历文件夹并自动生成目录树是一项常见的任务,它涉及到文件系统操作和数据结构的使用。这个任务通常用于构建文件管理器、进行文件搜索或实现类似资源管理器的功能。下面我们将详细讲解如何在VC++中...

    Android加载SD卡目录,文件夹遍历,设置文件对应打开方式等功能

    在Android开发中,访问外部存储设备(如SD卡)并管理其中的文件是常见的...同时,随着Android Q的发布,对外部存储的访问方式有了新的限制,使用`DocumentFile`类和`MANAGE_EXTERNAL_STORAGE`权限可能是更好的选择。

    精彩编程与编程技巧-如何在VB中实现目录遍历...

    ### 如何在VB中实现目录遍历 在Visual Basic(简称VB)中实现目录遍历是一种常见的需求,尤其是在需要处理文件系统操作的应用程序中。本文将详细介绍如何利用VB结合Windows API来实现目录遍历功能。 #### 知识点...

    MFC 目录树遍历程序

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来...通过分析和学习这些代码,你可以更深入地理解MFC如何处理目录遍历和树形控件的使用。同时,也可以借鉴其设计思路,为自己的项目提供灵感。

    DirTree 目录 OOP 遍历 框架

    在IT行业中,目录遍历是一项基础且重要的任务,特别是在文件管理、系统操作或者软件开发中。DirTree,正如其名,通常是指一个用于遍历目录结构的工具或框架。在这个VB6.0的实例中,"DirTree 目录 OOP 遍历 框架"是一...

    遍历磁盘目录,遍历所有文件

    在IT领域,遍历磁盘目录并访问所有文件是一项基础且重要的任务,它涉及到操作系统、文件系统和编程语言等多个方面。这项操作常用于文件管理、数据备份、病毒扫描等多种场景。下面将详细介绍如何实现这个功能,并结合...

    遍历SD卡文件

    然后,可以使用`File`类的方法来遍历文件和目录。以下是一个简单的遍历SD卡文件的例子: ```java public void listAllFilesOnSdCard() { // 获取SD卡根目录 File sdCard = Environment....

    PHP遍历目录及子目录所有文件并下载

    1.遍历当前及其子目录中的所有文件,文件放到http/down的目录下无论几级均可。 2.下载的代码fileDownProcess.php文件中除了echo $file_data;其他不能有echo。这点很重要,否则下载下来的文件无法使用。 3.不支持中文...

    php遍历文件目录的类.zip

    2. **遍历目录**:类中有一个方法,如`traverseDirectory()`,用于递归遍历目录。这个方法可能使用PHP的`scandir()`函数获取目录中的所有文件和子目录,然后对每个条目进行处理。如果条目是子目录,它会调用自身继续...

Global site tag (gtag.js) - Google Analytics