用java实现本地文件的遍历,顺便了解了下集合框架,注意java中还有Collections,是一个强大的工具,注意其与Collection的区别,在

for(File f: listFiles)  中,如果不做 if(listFiles != null) 判断,在遍历到listFiles为空时,会报NullPointerException的异常,熟悉下常见的NullPointerException异常。
 /*
*遍历某磁盘下的所有文件
*/
package familiarjava;
import java.io.*;
import java.util.*; public class TraversFile { //------------------------------方法一----------------------------------------
static Collection<File> listFiles(File root){
List<File> files = new ArrayList<File>();
listFiles(files, root);
return files;
} static void listFiles(List<File> files, File root) {
// TODO Auto-generated method stub
File[] listFiles = root.listFiles();
if(listFiles != null){ //若不做判断,会报空指针NullPointerException异常
for(File f: listFiles){
if(f.isFile())
files.add(f);
else if(f.isDirectory())
listFiles(files, f);
}
} } void printCollection(Collection<File> files){
if(files.isEmpty())
return;
Iterator<File> it = files.iterator();
while(it.hasNext())
System.out.println(it.next());
} //-------------------------------方法二---------------------------------------
public void traversefile(String dir, String filetype){
File f = new File(dir);
File[] fs = f.listFiles(); if(fs != null){
for(int i=0; i<fs.length; i++){
File file = fs[i];
if(file.isFile()){
String pathTemp = file.getAbsolutePath();
if((pathTemp.indexOf(filetype))!=-1)
System.out.println(file.getAbsolutePath());
}else{
traversefile(file.getAbsolutePath(),filetype);
//System.out.println(file.getAbsolutePath());
}
}
}
} public static void main(String[] args){
TraversFile tf = new TraversFile();
//tf.traversefile("f:/"); /*
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入盘符: ");
String dirSym = null;
try{
dirSym = br.readLine().toString();
}catch(IOException e){
System.out.println(e);
}
dirSym = dirSym + ":/"; System.out.println("请输入需要显示的文件类型的后缀名: ");
String fileType = null;
try{
fileType = br.readLine();
}catch(IOException e){
System.out.println(e);
}
fileType = "." + fileType;
tf.traversefile(dirSym, fileType);
*/ File temp = new File("D:\\iso");
Collection<File> files = listFiles(temp);
tf.printCollection(files);
}
}

java文件遍历的更多相关文章

  1. 使用 NIO.2 遍历目录下所有的Java文件

    package wellGrounded; import java.io.IOException; import java.nio.file.FileVisitResult; import java. ...

  2. Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合

    复习IO操作,突然想写一个小工具,统计一下电脑里面的Java代码量还有注释率,最开始随手写了一个递归算法,遍历文件夹,比较简单,而且代码层次清晰,相对易于理解,代码如下:(完整代码贴在最后面,前面是功 ...

  3. 从java文件和CS文件里查询方法使用次数工具

    前几天,领导让我找一下老系统(Java)里getRemoteUser方法都哪个文件用了,package是什么,方法被调用了多少次,当时因为着急,所以,直接人工找的,但是以后要是再出现,人工找就太讨厌了 ...

  4. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...

  5. 另类的package-info.java文件探讨

    原文地址:http://strong-life-126-com.iteye.com/blog/806246 翻看以前的笔记,看到一个特殊的java文件:pacakge-info.java,虽然有记录, ...

  6. JAVA 文件编译执行与虚拟机(JVM)简单介绍

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...

  7. IO复制多级目录 控制台输入文件目录然后把目录下java文件复制到 D: 并统计java个数

    package cn.itcast_05; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; impor ...

  8. 递归实现列出当前工程下所有.Java文件

    package com.lanxi.demo2_3; import java.io.File; import java.util.ArrayList; import java.util.List; / ...

  9. JAVA核心技术I---JAVA基础知识(文件系统及java文件基本操作)

    一:文件概述 文件系统是由OS(操作系统)管理的 文件系统和Java进程是平行的,是两套系统 文件系统是由文件夹和文件递归组合而成 文件目录分隔符 –Linux/Unix 用/隔开 –Windows用 ...

随机推荐

  1. angularjs1+nodejs搭建的个人博客 实战个人项目

    项目地址:https://github.com/MrZwqShuai/Micro-agency-Demo

  2. Rename a local and remote branch in git

    If you have named a branch incorrectly AND pushed this to the remote repository follow these steps b ...

  3. 部分常用dos命令

    Microsoft Windows XP [版本 ] (C) 版权所有 - Microsoft Corp. C:\Documents and Settings\Administrator>d: ...

  4. 04.Curator Leader选举

        在分布式计算中,leader election是很重要的一个功能,这个选举过程是这样子的:指派一个进程作为组织者,将任务分发给各节点.在任务开始前,哪个节点都不知道谁是leader或者coor ...

  5. Zabbix自动发现与主动注册

    接上篇:Zabbix监控主动模式 网络自动发现 zabbix agent的配置文件/etc/zabbix/zabbix_agentd.conf 注释StartAgents=0 添加 HostnameI ...

  6. EXSI5.5以上开启KVM二次虚拟化

    1,在EXSI5.5上创建centos虚拟机(过程省略) 2,开启EXSI5.5的ssh功能 3,ssh登录虚拟机 4,编辑虚拟配置文件 /vmfs/volumes/datastore1/目录下,找到 ...

  7. vscode编辑器配置C语言编译运行环境

    1.安装C/C++插件 2.安装编译环境,这里选择MinGW(http://mingw.org/ ) 选择一个安装目录,如:E:\workspace\MinGW mingw32-gcc开头的(包括了m ...

  8. 使用RMySQL连接MySQL数据库(R-3.4.3)

    1.安装DBI和RMySQL包(安装RMySQL时会依赖安装DBI) install.packages("RMySQL") 2.编写R脚本test.R # 使用RMySQL操作数据 ...

  9. No such file or directory

    项目-targets-build phases, 然后从copy bundle resources里面删掉红色的错误资源文件

  10. Nagle's algorithm

    w41字节的数据包只有1字节的可用信息.以减少数据包发送量来提高TCP/IP网络性能. https://en.wikipedia.org/wiki/Nagle's_algorithm https:// ...