Java遍历一个目录下的所有文件

转载 2018年04月16日 16:56:31

原文地址:http://blog.csdn.net/u013457382/article/details/51015728

    Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其他流类不同的是,流类关心的是文件的内容,而File类关心的是磁盘上文件的存储。

    一,File类有多个构造器,常用的构造器有:

1,public File(String pathname){}

  在pathname路径下创建文件对象

2,public File(String path,String name){}

  在path参数指定的目录中创建具有给定名字的File对象,如果path为null,构造器将使用当前目录创建对象

3,public File(File dir, String name){}

  File对象dir表示一个目录,在dir参数指定的目录中创建具有给定名字的File对象,如果dir为null,

构造器将使用当前目录创建对象

    二,获得文件的权限属性:

1,表明文件是否可读,可写,可执行

  boolean canRead()

  boolean canWrite()

  boolean canExecute()

2,设置文件的可读,可写,可执行

  boolean setReadable(bollean state,bollean ownerOnly)

  boolean setWritable((bollean state,bollean ownerOnly)

  boolean setExecutable((bollean state,bollean ownerOnly)

3,删除文件

  boolean delete() 

  如果文件被删除则返回true,否则返回false

  void deleteOnExit()

  在虚拟机关闭时将文件删除

4,判断文件是否存在

  boolean exists()

5,获得文件路径名

  String getCanonicalPath()

  返回包含这个文件的规范路径名的字符串该方法会使用恰当的目录分隔符,并可以获得底层文件系统所选择的大小写处理方式

  String getName()

  返回包含这个File对象的文件名的字符串,但不包含路径信息

6,判断File为文件还是目录

  boolean isDirectory()

  判断是否为一个目录

  boolean isFile()

  判断是否为一个文件

7,获得File对象包含的文件名和目录名

  String[] list()

  返回这个File对象包含的文件名和目录名构成的字符创数组

  String[] list(FilenameFilter filter)

  返回有这个File对象包含的满足过滤器条件的文件名和目录名构成的字符串数组

File还有许多方法属性,跟多的可以查看API文档

现在,使用File类来遍历一个目录下的所有文件,我的程序过程为:

1,获取pathName的File对象

2,判断该文件或目录是否存在,不存在时在控制台输出提醒

3,判断如果不是一个目录,就判断是不是一个文件,时文件则输出文件路径

4,获取此目录下的所有文件名与目录名的字符串数组

5,如果是一个目录,搜索深度currentDepth+1,输出目录名后,进行递归

6,如果是文件,则直接输出文件名


程序如下:

[java] view plain copy
  1. import java.io.File;  
  2. import java.io.IOException;  
  3.   
  4. public class DirErgodic {  
  5.   
  6.     private static int depth=1;  
  7.       
  8.     public static void find(String pathName,int depth) throws IOException{  
  9.         int filecount=0;  
  10.         //获取pathName的File对象  
  11.         File dirFile = new File(pathName);  
  12.         //判断该文件或目录是否存在,不存在时在控制台输出提醒  
  13.         if (!dirFile.exists()) {  
  14.             System.out.println("do not exit");  
  15.             return ;  
  16.         }  
  17.         //判断如果不是一个目录,就判断是不是一个文件,时文件则输出文件路径  
  18.         if (!dirFile.isDirectory()) {  
  19.             if (dirFile.isFile()) {  
  20.                 System.out.println(dirFile.getCanonicalFile());  
  21.             }  
  22.             return ;  
  23.         }  
  24.           
  25.         for (int j = 0; j < depth; j++) {  
  26.             System.out.print("  ");  
  27.         }  
  28.         System.out.print("|--");  
  29.         System.out.println(dirFile.getName());  
  30.         //获取此目录下的所有文件名与目录名  
  31.         String[] fileList = dirFile.list();  
  32.         int currentDepth=depth+1;  
  33.         for (int i = 0; i < fileList.length; i++) {  
  34.             //遍历文件目录  
  35.             String string = fileList[i];  
  36.             //File("documentName","fileName")是File的另一个构造器  
  37.             File file = new File(dirFile.getPath(),string);  
  38.             String name = file.getName();  
  39.             //如果是一个目录,搜索深度depth++,输出目录名后,进行递归  
  40.             if (file.isDirectory()) {  
  41.                 //递归  
  42.                 find(file.getCanonicalPath(),currentDepth);  
  43.             }else{  
  44.                 //如果是文件,则直接输出文件名  
  45.                 for (int j = 0; j < currentDepth; j++) {  
  46.                     System.out.print("   ");  
  47.                 }  
  48.                 System.out.print("|--");  
  49.                 System.out.println(name);  
  50.                   
  51.             }  
  52.         }  
  53.     }  
  54.       
  55.     public static void main(String[] args) throws IOException{  
  56.         find("D:\\MongoDB", depth);  
  57.     }  
  58. }  

测试截图:


文件的上传与下载(备java基础,jsp,servlet,tomcat)

-
  • 1970年01月01日 08:00

python 遍历目录下所有文件

#!/usr/bin/python # -*- coding: utf-8 -*- import os def gci(filepath): #遍历filepath下所有文件,包括子目录 file...
  • xiaoxinyu316
  • xiaoxinyu316
  • 2016-03-04 23:03:14
  • 959

java中遍历某个目录下的所有文件及文件夹中的文件

  • 2013年12月15日 12:42
  • 481B
  • 下载

使用java来把一个目录下的所有文件拷贝到另外一个目录下,并且重命名

import java.io.File; import java.io.FileReader; import java.io.FileWriter; public class HandleFile...
  • caihongshijie6
  • caihongshijie6
  • 2014-04-18 11:07:21
  • 3492

java遍历目录下的包括子目录下的所有文件

在java中遍历一个文件夹里边的所有文件,可以有两种方式:       一、递归遍历,通常也是开发者第一时间能想到的方法,递归遍历的优点是:实现起来相对简单,代码量相对较少,执行效率较高,缺点是:比较...
  • zhihaoma
  • zhihaoma
  • 2015-11-25 23:13:49
  • 6262

File(遍历一个目录下的所有文件)

package com.hz.test;import java.io.File; import java.util.Arrays; import java.util.LinkedList; impor...
  • qq_33624284
  • qq_33624284
  • 2016-12-13 10:28:29
  • 371

java代码遍历目录下的所有文件(查找对应目录下的所有文件)

今天有个朋友向我问了个问题,说是想用java代码看一个路径下的文件怎么看,于是随手写了下面一点代码,供不懂或不太了解的小牛牛们学习学习哈。 import java.io.*; class Test...
  • zeng308041977
  • zeng308041977
  • 2017-07-28 11:31:05
  • 305

java实现一个目录下全部文件复制到另一目录

  • 2009年12月21日 22:55
  • 2KB
  • 下载

matlab 遍历目录下所有文件

输入>> listing = dir(D:/)  返回listing = 30x1 struct array with fields:    name    date    bytes    isdi...
  • sclxf
  • sclxf
  • 2010-04-02 15:19:00
  • 10930

获得/读取一个目录下所有文件(包括子目录下)

  • 2010年09月23日 21:59
  • 30KB
  • 下载
收藏助手
不良信息举报
您举报文章:Java遍历一个目录下的所有文件
举报原因:
原因补充:

(最多只允许输入30个字)