`
qianjiangbing
  • 浏览: 87141 次
  • 性别: 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()获得的,不是手动写死的,
------------------
别无它意,希望你能更进步

相关推荐

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

    本篇文章主要介绍了Java使用File类遍历目录及文件实例代码,详细的介绍了File类的使用,有兴趣的可以了解一下。

    PHP使用内置dir类实现目录遍历删除

    本文实例讲述了PHP使用内置dir类实现目录遍历删除的方法。分享给大家供大家参考。具体实现方法如下: function clearDir($dir) { if (file_exists($dir)) { if(!is_dir($dir)) exit("{$dir}不是一个目录"); ...

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

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

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

    本文实例讲述了python文件操作之目录遍历的方法。分享给大家供大家参考。具体分析如下: Python的os模块,包含了普遍的操作系统功能,这里主要学习与路径相关的函数: os.listdir(dirname):列出dirname下的目录和...

    dirscalate:Dirscalate帮助将目录遍历漏洞升级为根访问(希望如此)

    Dirscalate帮助将目录遍历漏洞升级为根访问(希望如此) 要求 机械化 用法 dirscalate.py [-h] --link LINK [--histfile HISTFILE] [--token令牌] [--logfile LOGFILE] [--depth DEPTH] [--type TYPE] 利用目录遍历...

    遍历文件夹并建成目录树

    遍历文件夹并建成目录树__遍历文件夹并建成目录树-traverse file folders and create directory tree

    使用java8API遍历过滤文件目录及子目录及隐藏文件.docx

    1. 使用Files.list()迭代目录及其子目录文件 Files.list()可以迭代目录及其子目录文件 Files.list(Paths.get(".")) //当前目录 .forEach(System.out::println); 输出: .\filename1.txt .\directory1 .\filename2....

    java实现多级目录文件遍历及计数

    java实现多级目录的遍历及技术,作为javaIO流学习的练手作品

    Java遍历目录显示文件列表.rar

    Java遍历目录显示文件列表,读取文件夹中的所有文件,并以列表的形式显示出这些文件,下面来看一下相关的代码:  class ShowDirListener implements ActionListener {//取得目录内容的事件处理   public void ...

    vs2010 c 遍历指定文件夹中的所有制定类型文件

    vs2010 c 遍历指定文件夹中的所有制定类型文件

    文件目录递归遍历源码

    递归遍历用户选择的目录 //Call Browse Folder Window, Search Entire Folder and all sub-folders for desired file(s).

    search_dir_file.rar_C# 遍历文件_遍历所有文件

    遍历指定目录下所有目录及文件的源代码 遍历指定目录下所有目录及文件的源代码

    filetree.py

    python 递归遍历文件夹得到json格式目录树目录结构,输出的json目录结构如下:[{"title":"file1","value":"file"},{"title":"general","value":"dir","subdir":[{"title":"file2","value":"file"},{"title":"photo",...

    node-eachfile:遍历目录的文件

    迭代目录的文件。 var eachfile = require ( "eachfile" ) ; eachfile . in ( '.' , function ( stats , next ) { console . log ( stats . name , stats . isFile &#40; &#41; ) ; next ( ) ; } ) ; 与模块...

    TreeFile.txt

    //遍历排好序的文件数组,打印当前文件或目录名,然后递归目录 for(File f : files) { StringBuffer output = new StringBuffer(); output.append(getTime(time)); output.append(f.getName()); System.out....

    node-file-walker:递归遍历文件目录的 Node.js 模块

    一个简单的文件/目录遍历模块 安装 npm install file-walker 回调参数 files - 当前目录中的文件/目录数组,例如['dummy', 'test.js'] dir - 目录名,例如'./test' level - 当前目录级别从0开始 示例用法 假设...

    Java遍历目录所有文件.rar

    Java遍历目录所有文件,读取指定文件夹下的所有文件名,并列出来,使用java.io.File 类的方法来访问系统中的目录,在窗口上部的文本框中输入c 盘根目录“c:\”,按下窗口下部的按钮“View”,则在窗口中部的文本区...

    FDsploit:文件包含和目录遍历模糊,枚举和利用工具

    文件包含和目录遍历的模糊,枚举和利用工具。 FDsploit菜单: $ python fdsploit.py -h _____ ____ _ _ _ | __| \ ___ ___| |___|_| |_ | __| | |_ -| . | | . | | _| |__| |____/|___| _|_|___|_|_| |_|......

    dos_命令_bat命令_遍历文件夹目录树批量修改_后缀名

    dos_命令_bat命令_遍历文件夹目录树批量修改_后缀名

    遍历当前程序路径下的files和cache目录

    File和catch文件不会自动创建,需要先自行上传文件到该目录下,以命令行的方式,先切换到安装Android的tools目录下,运行以下命令:  adb push c:\piaoyao.mp3 /data/data/cn.com.jbit/files/piaoyao.mp3 对上面这条...

Global site tag (gtag.js) - Google Analytics